10pts,求优化
查看原帖
10pts,求优化
923022
Walledjc楼主2024/8/20 15:40
#include <bits/stdc++.h>
using namespace std;
long long cnt,a0,a1,b0,b1,t;
long long gcd(long long x,long long y){
	if(x==1) return y;
	if(y==1) return x;
	if(x%y==0&&x>y) return x;
	if(y%x==0&&y>x) return y;
	int maxn=1;
	for(long long i=2;i<max(x,y);i++){
		if(x%i==0&&y%i==0&&maxn<i){
			maxn=i;
		}
	}
	return maxn;
}
long long lcm(long long x,long long y){
	if(x==1) return y;
	if(y==1) return x;
	if(x%y==0&&x>y) return x;
	if(y%x==0&&y>x) return y;
	int maxn=1;
	for(long long i=2;i<=y-1;i++){
		if(x%i==0&&y%i==0&&maxn<i){
			maxn=i;
		}
	}
	return maxn*(x/maxn)*(y/maxn);
}
int main(){
	cin>>t;
	while(t--){
		cin>>a0>>a1>>b0>>b1;
		for(long long i=1;i<=max(max(max(a0,a1),b0),b1);i++){
			if(gcd(i,a0)==a1&&lcm(i,b0)==b1){
				cnt++;
			}
		}
		cout<<cnt<<endl;
		cnt=0;
	}
	return 0;
}
2024/8/20 15:40
加载中...