比赛 |
至少完成十道练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
TARDIS |
运行时间 |
0.309 s |
代码语言 |
C++ |
内存使用 |
0.79 MiB |
提交时间 |
2017-05-22 17:51:23 |
显示代码纯文本
#include<bits/stdc++.h>
#define COGS
using namespace std;
inline int gcd(int a,int b){
if (b==0) return a;
else return gcd(b,a%b);
}
const int maxn=2000010;
int a,b,c,d,n,cnt;
int prime[maxn];
inline bool is_prime(int x){
int num=floor(sqrt(x));
for (int i=2;i<=num;i++){
if (x%i==0) return false;
}
return true;
}
inline void getprime(int x){
cnt=0;
for (int i=2;i<=x;i++){
if(is_prime(i)&&x%i==0){
prime[++cnt]=i;
}
}
}
inline void Devide(int x)
{
cnt=0;
for(int i=1;i<=sqrt(x);i++)
{
if(x%i==0)
{
if(i!=1)
{
prime[++cnt]=i;
}
if(x/i!=1&&x/i!=i) prime[++cnt]=x/i;
}
}
}
inline void deal(int a,int b,int c,int d){
int ans=0;
//memset(prime,0,sizeof(prime));
Devide(c);
int temp1=d/c;
int gtemp1=gcd(temp1,c);
int gtemp2=temp1/gtemp1*c;
if(c%temp1||c==temp1||c==d){
if (gcd(temp1,a)==b&>emp2==d){
ans++;
}
}
for (int i=1;i<=cnt;i++){
int t=prime[i]*temp1;
int gtemp3=gcd(t,a);
if (gtemp3!=b) continue;
gtemp3=gcd(c,t);
int gtemp4=t/gtemp3*c;
if (gtemp4==d){
if (c%t||(c==t&&d==c)||c==d){
ans++;
}
}
}
printf("%d\n",ans);
}
inline int Main(){
#ifdef COGS
freopen("son.in","r",stdin);
freopen("son.out","w",stdout);
#endif
scanf("%d",&n);
while(n--){
scanf("%d%d%d%d",&a,&b,&c,&d);
deal(a,b,c,d);
}
return 0;
}
int main(){;}
int xlm=Main();