大数求余
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
using namespace std;
int visit[11000];
int num[11000];
int main()
{
int t,sum = 1;
scanf("%d",&t);
while(t--)
{
int x,m,k,c;
scanf("%d%d%d%d",&x,&m,&k,&c);
memset(visit,0,sizeof(visit));
memset(num,0,sizeof(num));
int ans = 0,cas = 0;
while(1)
{
ans = ans * 10 + x;
ans = ans % k;
if(visit[ans] == 1) //找到循环点跳出
break;
else
visit[ans] = 1;
num[cas++] = ans;//记录余数,case代表周期个数
}
m = (m-1) % cas;//求余的时候要注意,余数只有(0~ cas-1 )
printf("Case #%d:\n",sum++);
if(num[m] == c)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}