Problem Description
F(x,m) 代表一个全是由数字x组成的m位数字。请计算,以下式子是否成立:
F(x,m) mod k ≡ c
Input
第一行一个整数T,表示T组数据。
每组测试数据占一行,包含四个数字x,m,k,c
1≤x≤9
1≤m≤1010
0≤c
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
int a[100000],b[100000];
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
memset(a,-1,sizeof(a)),memset(b,-1,sizeof(b));
long long x,m,k,c,ans;
cin>>x>>m>>k>>c;
ans=0;
int sec=-1,fir=-1,d;
for(int j=1;j<=m;j++)
{
ans=ans*10+x;
ans%=k;
if(a[ans]==-1)
{
b[j]=ans;
a[ans]=j;
}
else
{
sec=j,fir=a[ans];
d=sec-fir;
break;
}
}
if(sec!=-1)
m=(m-fir)%d+fir; // 在循环中的位置
int f=b[m];
cout<<"Case #"<<i<<":"<<endl;
if(f==c)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}