记录编号 |
174986 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2009]Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
炽烈的爱 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.114 s |
提交时间 |
2015-08-03 21:08:15 |
内存使用 |
0.27 MiB |
显示代码纯文本
#include<cstdio>
using namespace std;
int n,ans;
struct date
{
int w,shu[100],zhi[100],tot;
}a0,a1,b0,b1;
int aa[100],bb[100];
bool p=1;
int main()
{
freopen("son.in","r",stdin);
freopen("son.out","w",stdout);
scanf("%d",&n);
for(int t=1;t<=n;++t)
{
p=1;
scanf("%d%d%d%d",&a0.w,&a1.w,&b0.w,&b1.w);
int x=2;b1.tot=0;
while(b1.w>=x*x)
{
int len=0;
while(b1.w%x==0)
{
len++;
b1.w/=x;
}
if(len>0)
{
b1.shu[++b1.tot]=x;
b1.zhi[b1.tot]=len;
//printf("%d %d %d\n",b1.tot,b1.shu[b1.tot],b1.zhi[b1.tot]);
}
++x;
}
if(b1.w!=1)
{
b1.shu[++b1.tot]=b1.w;
b1.zhi[b1.tot]=1;
//printf("%d %d %d\n",b1.tot,b1.shu[b1.tot],b1.zhi[b1.tot]);
}
a0.tot=0;
for(int t=1;t<=b1.tot;++t)
{
int len=0;
while(a0.w%b1.shu[t]==0)
{
len++;
a0.w/=b1.shu[t];
}
a0.shu[++a0.tot]=b1.shu[t];
a0.zhi[a0.tot]=len;
//printf("%d %d %d\n",a0.tot,a0.shu[a0.tot],a0.zhi[a0.tot]);
}
a1.tot=0;
for(int t=1;t<=b1.tot;++t)
{
int len=0;
while(a1.w%b1.shu[t]==0)
{
len++;
a1.w/=b1.shu[t];
}
a1.shu[++a1.tot]=b1.shu[t];
a1.zhi[a1.tot]=len;
//printf("%d %d %d\n",a1.tot,a1.shu[a1.tot],a1.zhi[a1.tot]);
}
b0.tot=0;
for(int t=1;t<=b1.tot;++t)
{
int len=0;
while(b0.w%b1.shu[t]==0)
{
len++;
b0.w/=b1.shu[t];
}
b0.shu[++b0.tot]=b1.shu[t];
b0.zhi[b0.tot]=len;
//printf("%d %d %d\n",b0.tot,b0.shu[b0.tot],b0.zhi[b0.tot]);
}
for(int i=1;i<=b1.tot;++i)
{
if(b1.zhi[i]<a1.zhi[i])
{
p=0;
break;
}
if(a1.zhi[i]<a0.zhi[i]&&b1.zhi[i]>b0.zhi[i]&&b1.zhi[i]>a1.zhi[i])
{
p=0;
break;
}
if(a1.zhi[i]<a0.zhi[i])
{
aa[i]=a1.zhi[i];
bb[i]=a1.zhi[i];
continue;
}
if(b1.zhi[i]>b0.zhi[i])
{
aa[i]=b1.zhi[i];
bb[i]=b1.zhi[i];
continue;
}
aa[i]=a1.zhi[i];bb[i]=b1.zhi[i];
}
ans=1;
if(p==0)
ans=0;
else
for(int t=1;t<=b1.tot;++t)
ans*=(bb[t]-aa[t]+1);
printf("%d\n",ans);
}
//while(1);
}