题目: 统计一下 𝑎𝑎𝑎 ⋯ 𝑎𝑎𝑎(𝑛个𝑎) × 𝑏 的结果里面有多少个数字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;
}