题目: 统计一下 𝑎𝑎𝑎 ⋯ 𝑎𝑎𝑎(𝑛个𝑎) × 𝑏 的结果里面有多少个数字d,a,b,d均为一位数。
样例解释:
3333333333*3=9999999999,里面有10个9。
解法: 打表可以得到,相乘的结果最多有4个不同的数字,如果n比较小暴力即可,如果n比较大的话,先求出这4个数字(可能有相同),然后根据n的大小得出。 结果的表示方法sl*re l可能有多位。
#include <algorithm>
using namespace std;
int main()
{
int t = 0;
scanf("%d",&t);
while(t--)
{
int a,b,d,n;
scanf("%d%d%d%d", &a, &b, &d, &n);
if(n < 5){
int now = 1;
n--;
while(n--)
{
now = now * 10 + 1;
}
int sum = a*now * b;
int ans = 0;
while(sum)
{
if(sum % 10 == d)
ans++;
sum /= 10;
}
printf("%d\n",ans);
}
else{
int num = a*11111*b;
int now = a * b;
int len;
if(now >= 10)
len = 1;
else
len = 0;
//printf("%d\n",num);
int s,l,r,e;
e = num % 10;
num /= 10;
r = num %10;
num /= 10;
l = num % 10;
num /= 10;
while(num > 10)
num /= 10;
s = num;
int sum = 0;
if(d == s)
sum++;
if(d == r)
sum++;
if(d == l)
sum += n-3+len;
if(d == e)
sum++;
printf("%d\n",sum);
}
}
return 0;
}