90分的暴力求助,第一个点总是wa
查看原帖
90分的暴力求助,第一个点总是wa
141335
qwq2519楼主2021/7/27 14:57
#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i(j);i<=k;++i)
#define drp(i,j,k) for(register int i(j);i>=k;--i)
using namespace std;
#define int long long
inline int  max(int a, int b) {
	return a > b ? a : b;
}
inline int  min(int a, int b) {
	return a > b ? b : a;
}
int a0, a1, b0, b1, ans;

inline int gcd(int a, int b) {
	return b ? gcd(b, a % b) : a;
}

inline int check(int x) {
	if(gcd(x, a0) != a1) return false;
	if(x * b0 / gcd(x, b0) != b1) return false;
	return true;
}

 main() {
	ios::sync_with_stdio(false);
	int T;
	cin >> T;
	while(T--) {
		cin >> a0 >> a1 >> b0 >> b1;
		ans = 0;
		int t = sqrt(b1);
		rep(i, 1, t) {
			if(!(b1 % i)) {
				ans += check(i);
				ans += check(b1 / i);
			}
		}
		cout << ans << endl;
	}
	return 0;
}

为什么是wa。。不该说T吗。蓝书写在实际测试中可以得90分,但是那十分为什么错。。自己判断不出来。求大佬指明BUG

2021/7/27 14:57
加载中...