记录编号 |
556221 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2009]Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
锝镆氪锂铽 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.479 s |
提交时间 |
2020-10-18 11:26:48 |
内存使用 |
8.54 MiB |
显示代码纯文本
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define LL long long
using namespace std;
const int maxN = 4e5 + 10;
void factor(LL n);
void primes(int n);
LL lcm(LL a, LL b);
LL gcd(LL a, LL b);
int n, m;
LL fac[maxN];
bool v[maxN];
int main(void){
freopen("son.in","r",stdin);
freopen("son.out","w",stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i ++){
LL a0, a1, b0, b1;
int ans = 0;
scanf("%lld%lld%lld%lld", &a0, &a1, &b0, &b1);
factor(b1);
for (int i = 1; i <= m; i ++){
if (gcd(a0, fac[i]) == a1 && lcm(fac[i], b0) == b1)
ans ++;
}
printf("%d\n", ans);
}
return 0;
}
LL gcd(LL a, LL b){
return b ? gcd(b, a % b) : a;
}
LL lcm(LL a, LL b){
return (a * b) / gcd(a, b);
}
void factor(LL n){
m = 0;
for (int i = 1; i * i <= n; i ++){
if (n % i == 0){
fac[++ m] = i;
if (i != n / i)
fac[++ m] = n / i;
}
}
}