[luoguP1072] Hankson 的趣味题(数论)
2017-06-20 15:03
134 查看
由题意得
- gcd(x, a0) = a1 ——> gcd(x / a1, a0 / a1) = 1
- lcm(x, b0) = b1 ——> x * b0 / gcd(x, b0) = b1 ——> gcd(x, b0) = x * b0 / b1 ——> gcd(b1 / b0, b1 / x) = 1
那么只需要枚举 b1 的因子并判断即可
#include <cstdio> #include <iostream> int n, a0, a1, b0, b1, ans; inline int gcd(int x, int y) { return !y ? x : gcd(y, x % y); } inline bool check(int x) { return gcd(x / a1, a0 / a1) == 1 && gcd(b1 / b0, b1 / x) == 1; } int main() { int i, j; scanf("%d", &n); while(n--) { scanf("%d %d %d %d", &a0, &a1, &b0, &b1); ans = 0; for(i = 1; i * i <= b1; i++) if(!(b1 % i)) { if(!(i % a1)) ans += check(i); if((j = b1 / i) ^ i && !(j % a1)) ans += check(j); } printf("%d\n", ans); } return 0; }
不知道为什么我枚举 a1 的倍数却不对
相关文章推荐
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- 洛谷1072 hankson的趣味题 数论乱搞 非标准解法
- NOIP2009 Hankson的趣味题 [数论]
- NOIP--Hankson 的趣味题(数论)
- 洛谷1072 Hankson 的趣味题
- 【noip2009提高组】 Hankson 的趣味题 欧几里得(数论)
- noip2009 luogu1072 Hankson的趣味题