社区讨论

求助

P1072[NOIP 2009 提高组] Hankson 的趣味题参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi6xg5qw
此快照首次捕获于
2025/11/20 12:24
4 个月前
此快照最后确认于
2025/11/20 12:24
4 个月前
查看原帖
这道题看到两个限制条件,可以确定要在b1的因子中枚举,为什么这样做只有10分呢?
CPP
#include<iostream>
using namespace std;

int n, ans, a0, a1, b0, b1;

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

int lcm(int a, int b) {
	return a/gcd(a, b)*b;
}

int main() {
	cin >> n;
	while (n--) {
		ans=0;
		int i;
		cin >> a0 >> a1 >> b0 >> b1;
		for (i=a1; i*i<=b1; i++) {
			if (b1%i==0) {
				if (gcd(i, a0)==a1 && lcm(i, b0)==b1) ans++;
				int tmp=b1/i;
				if (tmp==i) continue;
				if (gcd(tmp, a0)==a1 && lcm(tmp, b0)==b1) ans++;
				
			}
		}
		cout << ans << endl;
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...