https://vjudge.net/problem/387912/origin
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”,代表四个数字,是否能够满足题目中给的公式。
Sample Input
3
1 3 5 2
1 3 5 1
3 5 99 69
Sample Output
Case #1:
No
Case #2:
Yes
Case #3:
Yes
学到了学到了
a % b == c 这三个数同时乘以一个正整数,式子依然成立
还有
m个x == x * m个1 = x * ( 1 + 10 + 100 + 10^m ) 等比数列求和
#include<bits/stdc++.h>
using namespace std;
using lon = long long;lon quick(lon a,lon b,lon c)//快速幂取模
{lon ans=1;a%=c;while(b){if(b&1) ans = ans * a %c;a = a * a % c;b >>= 1;}return ans%c;
}lon slove(lon x, lon m, lon k)
{
// cout << (quick(10, m, k) - 1) << endl;return ((quick(10, m, k*9) - 1) * x) % (k * 9);
}int main()
{int T;cin >> T;for(int tt = 1; tt <= T; tt++){lon x, m, k, c;cin >> x >> m >> k >> c;printf("Case #%d:\n", tt);//cout << slove(x, m, k) << endl;cout << ((slove(x, m, k) == c * 9) ? "Yes" : "No") << endl;}return 0;
}