不写return的话没有返回值啊,为什么第一份代码能AC呢?虽然第二份也能A。 区别在Line5,
#include<iostream>
#define ll long long
using namespace std;
ll gcd(ll x, ll y){
if(y==0) return x;
gcd(y,x%y); //辗转相除:gcd(a,b)=gcd(b,a%b)
}
int main(){
int x,y,ans=0;
cin>>x>>y;
ll z=x*y;
for(ll i=1;i*i<=z;i++){
if(z%i==0&&gcd(i,z/i)==x){ //辗转相除法
ans+=2; //每组数据可以颠倒,算两个
}
}
if(x==y)ans--; //如果存在x=y,那么有一组数据的两个值相等,不能颠倒
cout<<ans;
}
#include<iostream>
#define ll long long
using namespace std;
ll gcd(ll x, ll y){
if(y==0) return x;
return gcd(y,x%y); //辗转相除:gcd(a,b)=gcd(b,a%b)
}
int main(){
int x,y,ans=0;
cin>>x>>y;
ll z=x*y;
for(ll i=1;i*i<=z;i++){
if(z%i==0&&gcd(i,z/i)==x){ //辗转相除法
ans+=2; //每组数据可以颠倒,算两个
}
}
if(x==y)ans--; //如果存在x=y,那么有一组数据的两个值相等,不能颠倒
cout<<ans;
}