思路:可以发现一定会出现循环节。模拟乘法过程,如果出现了循环节就结束,但是注意如果最后一位还要进位的话,要判断答案是否还要+1。
#include <bits/stdc++.h> using namespace std; int a, b, d, n; int main() { int T;scanf("%d", &T); while (T--) { scanf("%d%d%d%d", &a, &b, &d, &n); int ans = 0, pre = -1, g = 0; for (int i = 0; i < n; i++) { int temp = a*b + g; g = temp / 10; int x = temp % 10; if (temp == pre) { if (x == d) ans += n-i; break; } pre = temp; if (x == d) ans++; } if (g != 0 && g == d) ans++; printf("%d\n", ans); } return 0; } /* 2 3 3 9 10 3 3 0 10 */