记录编号 |
290234 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2009]Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
dateri |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.072 s |
提交时间 |
2016-08-05 22:14:58 |
内存使用 |
1.07 MiB |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
struct aa{
int v,t;
};
aa x[100001];
int fenjie(aa *p,int n)
{
int count=0,i=2;
while(i*i<=n)
{
if(!(n%i))
{
p[++count].v=i;
p[count].t=0;
while(!(n%i))
n/=i,p[count].t++;
}
i++;
}
if(n>1)
p[++count].v=n,p[count].t=1;
return count;
}
int work(int x,int i)
{
int count=0;
while(!(x%i))
x/=i,count++;
return count;
}
int main()
{
freopen("son.in","r",stdin);
freopen("son.out","w",stdout);
int i,t,j,a0,a1,b0,b1,num,minn,maxx,count,a,b,c,ans;
scanf("%d",&t);
while(t--)
{
//memset(x,0,sizeof(x));
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
num=fenjie(x,b1);
// for(i=1;i<=num;i++)
// printf("%d %d\n",x[i].v,x[i].t);
ans=1;
for(i=1;i<=num;i++)
{
count=0;
a=work(a0,x[i].v);
b=work(a1,x[i].v);
c=work(b0,x[i].v);
//printf("\n%d %d %d %d\n",a,b,c,x[i].t);
// for(j=0;j<=x[i].t;j++)
// if(min(a,j)==b&&max(j,c)==x[i].t)
// count++;
if(a==b)
minn=a;
else
{
if(max(b,c)==x[i].t)
continue;
else
break;
}
if(c==x[i].t)
maxx=c;
else
{
if(min(a,x[i].t)==b)
continue;
else
break;
}
//printf("%d\n\n",x[i].t);
ans*=maxx-minn+1;
}
if(i==num+1)
printf("%d\n",ans);
else
printf("0\n");
}
return 0;
}