您的位置:首页 > 其它

hdu 4320 Arcane Numbers 1

2012-08-03 15:34 393 查看

ArcaneNumbers1

TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)
TotalSubmission(s):1468AcceptedSubmission(s):466

[align=left]ProblemDescription[/align]
VanceandShacklerlikeplayinggames.Oneday,theyareplayingagamecalled"arcanenumbers".Thegameisprettysimple,VancewritesdownafinitedecimalunderbaseA,andthenShacklertranslatesitunderbaseB.IfShacklercantranslateitintoafinitedecimal,hewins,elseitwillbeVance’swin.NowgivenAandB,pleasehelpVancetodeterminewhetherhewillwinornot.NotethattheyareplayingthisgameusingamysterylanguagesothatAandBmaybeupto10^12.


[align=left]Input[/align]
ThefirstlinecontainsasingleintegerT,thenumberoftestcases.
Foreachcase,there’sasinglelinecontainsAandB.


[align=left]Output[/align]
Foreachcase,output“NO”ifVancewillwinthegame.Otherwise,print“YES”.SeeSampleOutputformoredetails.


[align=left]SampleInput[/align]

3
55
23
10002000


[align=left]SampleOutput[/align]

Case#1:YES
Case#2:NO
Case#3:YES


[align=left]Author[/align]
VanceandShackler


[align=left]Source[/align]
2012Multi-UniversityTrainingContest3


[align=left]Recommend[/align]
zhoujiaqi2010
//不懂意思、到网上查了下意思、就是问A的因子数B里面是否都有

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#defineN1000000
usingnamespacestd;
boolh[1000001];
intrc[100000];
intcnt;
voidset()
{
inti,j,k=1;
for(i=4;i<N;i+=2)
h[i]=1;
for(i=3;i<1000;i+=2)
if(!h[i])
{
for(j=i*i;j<N;j+=i)
h[j]=1;
}
for(i=3;i<N;i+=2)
if(!h[i])rc[k++]=i;
rc[0]=2;rc[k]=1000000000;
}
intmain()
{
set();
intT,t=1;
__int64A,B;
inti,k;
__int64c[22];//卡这里好久,A可能是超过int范围的素数、所以、悲剧
boolb;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d",&A,&B);
inttemp=sqrt(double(A));
for(k=i=0;rc[i]<=temp;i++)
{
b=0;
while(A%rc[i]==0)
{
b=1;
A/=rc[i];
}
if(b)c[k++]=rc[i];
if(A==1)break;
}
if(A!=1)c[k++]=A;
for(i=0;i<k;i++)
if(B%c[i])
break;
printf("Case#%d:",t++);
printf(i==k?"YES\n":"NO\n");
}
return0;
}
//再插段好点的代码


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#defineN1000000
usingnamespacestd;
boolh[1000001];
intrc[100000];
intcnt;
voidset()
{
inti,j,k=1;
for(i=4;i<N;i+=2)
h[i]=1;
for(i=3;i<1000;i+=2)
if(!h[i])
{
for(j=i*i;j<N;j+=i)
h[j]=1;
}
for(i=3;i<N;i+=2)
if(!h[i])rc[k++]=i;
rc[0]=2;rc[k]=1000000000;
}
intmain()
{
set();
intT,t=1;
__int64A,B;
inti,k;
intc[22];
boolb;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d",&A,&B);
inttemp=sqrt(double(A));
for(b=1,i=0;rc[i]<=temp;i++)
{
if(A%rc[i]==0)
{
if(B%rc[i]!=0)
{
b=0;
break;
}
while(A%rc[i]==0)
A/=rc[i];
}
}
if(A!=1&&(B%A)!=0)b=0;
printf("Case#%d:",t++);
if(b)printf("YES\n");
elseprintf("NO\n");
}
return0;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: