0%

51nod-1770

题目:
统计一下 𝑎𝑎𝑎 ⋯ 𝑎𝑎𝑎(𝑛个𝑎) × 𝑏 的结果里面有多少个数字d,a,b,d均为一位数。

样例解释:

3333333333*3=9999999999,里面有10个9。

解法:
打表可以得到,相乘的结果最多有4个不同的数字,如果n比较小暴力即可,如果n比较大的话,先求出这4个数字(可能有相同),然后根据n的大小得出。
结果的表示方法sl*re l可能有多位。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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;
}