BSG白山极客挑战赛 20 分 排名第 559 比赛已经结束
数数字
System Message (命题人) yule_z (测试)
基准时间限制:1 秒 空间限制:262144 KB 分值: 20
统计一下 aaa ⋯ aaan个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
对于每一组数据,输出一个整数占一行,表示答案。
Input示例
2
3 3 9 10
3 3 0 10
Output示例
10
0
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
long long n;
cin>>n;
while(n--)
{int a1;
long long a,b,d,n;
long long d1,l=0;
cin>>a>>b>>d>>n;
if(n>3)
{
d1=a*100+a*10+a;
d1=d1*b;
int dp[4],de[4];
memset(dp,0,sizeof(dp));
memset(de,0,sizeof(de));
int i=3;
while(d1!=0)
{
dp[i]=d1%10;
if(dp[i]==d) de[i]=1;
d1=d1/10;
i--;
}
i=0;
if(dp[0]==0) i=1;
if(de[i+1]==1) de[i+1]=n-2;
cout<<de[0]+de[1]+de[2]+de[3]<<endl;
}
else
{
int l;
if(n==1) a1=a*b;
if(n==2) a1=(a*10+a)*b;
if(n==3) a1=(a*100+a*10+a)*b;
int x=0,k;
while(a1!=0)
{
k=a1%10;
if(k==d) x++;
a1=a1/10;
}
cout<<x<<endl;
}
}
return 0;
}