满分,但是有疑惑
查看原帖
满分,但是有疑惑
246331
mystic_qwq楼主2023/4/21 18:54

AC Code:

#include<iostream>
using namespace std;
#define int unsigned long long
int x,y;
int ans=0;
inline int gcd(int a, int b){
	if(b==0)return a;
    return gcd(b,a%b);
}
#define lcm(a,b) a*b/x
signed main(){
	cin>>x>>y;
	if(x==y){
		cout<<1<<endl;return 0;
	}y*=x;
	for(int i=x;i*i<=y;i+=x)if(y%i==0&&gcd(y/i,i)==x)++ans;
	cout<<ans*2;
	return 0;
}

但是用c重写一遍就错了

typedef unsigned long long ULL;
x,y,i;ULL ans;
ULL gcd(ULL x,ULL y){if(!y)return x;return(y,y%x);}
main(){
	scanf("%d%d",&x,&y);
	if(x==y){putchar('1');return;}
	y*=x;
	for(i=x;i*i<=y;i+=x)
		if(y%i==0&&gcd(y/i,i)==x)
			++ans;
	printf("%lld",ans*2);
}
2023/4/21 18:54
加载中...