数数字
51Nod - 1770统计一下
个aaa ⋯ aaa⏟n个a × b 的结果里面有多少个数字d,a,b,d均为一位数。样例解释:
3333333333*3=9999999999,里面有10个9。
Input多组测试数据。
第一行有一个整数T,表示测试数据的数目。(1≤T≤5000)
接下来有T行,每一行表示一组测试数据,有4个整数a,b,d,n。 (1≤a,b≤9,0≤d≤9,1≤n≤10^9)Output对于每一组数据,输出一个整数占一行,表示答案。Sample Input
2 3 3 9 10 3 3 0 10Sample Output
10 0
思路:
如果a*b<10,如果d等于a*b就输出n,否则输出0。如果a*b大于等于10,就模拟乘法过程,找出循环数
代码:
#include<stdio.h>
#include<string.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);
if(a*b<10) //如果a*b<10,如果d等于a*b就输出n,否则输出0
{
if((a*b)==d)printf("%d\n",n);
else printf("0\n");
}
else
{
int r=a*b/10;
int l=a*b%10;
int ans[10]={0};
ans[l]++;
n--;
while(n) //模拟乘法过程
{
l=(a*b+r)%10;
r=(a*b+r)/10;
if(ans[l])
{
ans[l]+=n;
break;
}
else
{
ans[l]++;
}
n--;
}
ans[r]++;
printf("%d\n",ans[d]);
}
}
return 0;
}