1. All X
1.1 基本思路
k和c的范围都不大,因此可以考虑迭代找循环节,然后求余数,判定是否相等。这题还是挺简单的。
1.2 代码
1 /* 5690 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> 5 #include <map> 6 #include <queue> 7 #include <set> 8 #include <stack> 9 #include <vector> 10 #include <deque> 11 #include <bitset> 12 #include <algorithm> 13 #include <cstdio> 14 #include <cmath> 15 #include <ctime> 16 #include <cstring> 17 #include <climits> 18 #include <cctype> 19 #include <cassert> 20 #include <functional> 21 #include <iterator> 22 #include <iomanip> 23 using namespace std; 24 //#pragma comment(linker,"/STACK:102400000,1024000") 25 26 #define sti set<int> 27 #define stpii set<pair<int, int> > 28 #define mpii map<int,int> 29 #define vi vector<int> 30 #define pii pair<int,int> 31 #define vpii vector<pair<int,int> > 32 #define rep(i, a, n) for (int i=a;i<n;++i) 33 #define per(i, a, n) for (int i=n-1;i>=a;--i) 34 #define clr clear 35 #define pb push_back 36 #define mp make_pair 37 #define fir first 38 #define sec second 39 #define all(x) (x).begin(),(x).end() 40 #define SZ(x) ((int)(x).size()) 41 #define lson l, mid, rt<<1 42 #define rson mid+1, r, rt<<1|1 43 44 typedef long long LL; 45 const int maxn = 10005; 46 int x; 47 LL m; 48 int c, k; 49 int visit[maxn]; 50 51 int main() { 52 ios::sync_with_stdio(false); 53 #ifndef ONLINE_JUDGE 54 freopen("data.in", "r", stdin); 55 freopen("data.out", "w", stdout); 56 #endif 57 58 int t; 59 int tmp, ntmp; 60 LL i, cycle; 61 62 scanf("%d", &t); 63 rep(tt, 1, t+1) { 64 scanf("%d%I64d%d%d", &x,&m,&k,&c); 65 printf("Case #%d:\n", tt); 66 memset(visit, -1, sizeof(visit)); 67 ntmp = x % k; 68 cycle = -1; 69 for (i=1; i<=m; ++i) { 70 if (visit[tmp=ntmp] != -1) { 71 cycle = i - visit[tmp]; 72 break; 73 } 74 visit[tmp] = i; 75 ntmp = (10*tmp + x) % k; 76 } 77 78 if (cycle == -1) { 79 puts(tmp==c ? "Yes":"No"); 80 } else { 81 LL n = ((m - visit[tmp]) % cycle + cycle) % cycle; 82 for (i=0; i<n; ++i) 83 tmp = (10*tmp + x) % k; 84 puts(tmp==c ? "Yes":"No"); 85 } 86 } 87 88 #ifndef ONLINE_JUDGE 89 printf("time = %ldms.\n", clock()); 90 #endif 91 92 return 0; 93 }