51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)相关的知识,希望对你有一定的参考价值。

题目:

 

 

这题很简单,找规律即可。

 

考虑两次进位:

1.a*b时的进位。

2.aa*b时加法时进位。

 

 

 

代码:

#include <bits\\stdc++.h>
using namespace std;
int num[10]; 
int main(){
    int a,b,d,n,t;
    cin >> t;
    while(t--){
        cin >> a >> b >> d >> n;
        memset(num,0,sizeof(num));
        if(n <= 5){
            int t = n;
            int s = 0;
            while(t--){
                s = s*10 + a;
            }
            s *= b;
            do{
                num[s%10]++;
                s /= 10;
            } while(s != 0);
        }else{
            int t = 3;
            int s = 0;
            while(t--){
                s = s*10 + a;
            }
            s *= b;
            int ge = s%10;
            int shi = s/10%10;
            int bai = s/100%10;
            int qian = s/1000%10;
            if(qian != 0){
                num[qian]++;
            }
            num[ge]++;
            num[shi]++;
            num[bai] += n-2;
        }
        cout << num[d] << endl;
    }
    return 0;
} 

以上是关于51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)的主要内容,如果未能解决你的问题,请参考以下文章

ACM学习历程—51NOD 1770数数字(循环节)

51NOD 1385凑数字(找规律?)

51nod 数数字(水题)

1770 数数字

51nod1770(xjb)

51nod-1537 1537 分解(矩阵快速幂+找规律)