思路:可以发现一定会出现循环节。模拟乘法过程,如果出现了循环节就结束,但是注意如果最后一位还要进位的话,要判断答案是否还要+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
*/