All X
Accepts: 1281
Submissions: 7580
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
#include<iostream>
#include <vector>
using namespace std;
//建立一个数组a[n]
//n=0 10%k
//n=1 10^10 %k
//n=2 10^100 %k
//n=3 10^1000 %k
//....n=x (10^(10^x))%k
//建立一个数组b[n]
//n=0 1%k
//n=1 (10位1)%k
//n=2 (100位1)%k
//n=3 (1000位1)%k
//....n=x (10^x位1)%k
int a[11];
int b[11];
void init_a(int k)
{
int x;
a[0] = 10%k;
for(int i=1;i<=10;i++)
{
x = a[i-1];
for(int j=1;j<=9;j++)
x = (x * a[i-1])%k; //x = (x * 10)%k;
a[i] = x;
//cout << x << endl;
}
}
void init_b(int k)
{
int x;
b[0] = 1%k;
for(int i=1;i<=10;i++)
{
x = b[i-1];
for(int j=1;j<=9;j++)
x = (x*a[i-1] + b[i-1])%k; //x = (x * 10)%k;
b[i] = x;
//cout << x << endl;
}
}
/*
int main()
{
int k=3721;
int x;
init_a(k);
init_b(k);
string m = "371";
//cout << m.length() << endl;
int m_len = m.length();
cout << m_len ;
x = 0;
for(int i=0;i<m_len;i++)
{
for(int j=1;j<=m[i];j++)
{
x = (x * a[m_len-i-1] +b[m_len-i-1])%k;
}
}
cout << x << endl;
}
*/
int main()
{
int x,c,k;
string m;
int m_len;
int T,count;
int result;
cin >> T;
for(count = 1;count <=T;count ++)
{
cin >> x >> m >> k >> c;
m_len = m.length();
init_a(k);
init_b(k);
result = 0;
for(int i=0;i<m_len;i++)
{
for(int j=1;j<=m[i];j++)
{
result = (result * a[m_len-i-1] +b[m_len-i-1])%k;
}
}
result = (result*x)%k;
cout << "Case #" << count << ":" << endl;
if(result %k ==c)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}