F(x,m)F(x,m) 代表一个全是由数字xx组成的mm位数字。请计算,以下式子是否成立:
F(x,m) mod k ≡ cF(x,m) mod k ≡ c
Input
第一行一个整数TT,表示TT组数据。
每组测试数据占一行,包含四个数字x,m,k,cx,m,k,c
1≤x≤91≤x≤9
1≤m≤10101≤m≤1010
0≤c<k≤10,0000≤c<k≤10,000
Output
对于每组数据,输出两行:
第一行输出:"Case #i:"。ii代表第ii组测试数据。
第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。
#include<stdio.h>
#include<math.h>
#define ll long long
ll x,m,k,c;
ll Pow(ll x,ll y,ll mod)
{
ll ret =1;
while(y)
{
if(y&1)
ret = ret*x%mod;
x=x*x%mod;
y>>=1;
}
return ret;
}
int main()
{
int t,bj=1;
scanf("%d",&t);
while(t--)
{
scanf("%lld %lld %lld %lld",&x,&m,&k,&c);
printf("Case #%d:\n",bj++);
ll mod = 9*k;
ll p = Pow(10, m, mod);
if((p-1)*x%mod == 9*c)
printf("Yes\n");
else
printf("No\n");
}
}