返回顶部

牛客编程巅峰赛S1第3场 - 青铜&白银 A.位数求和

  • 题意:求所有\(n\)位数每位之和等于\(m\)的数的和.

  • 题解:数据范围非常小,我们可以直接暴力枚举\(t\)\(10*t\)的所有数字,逐位分解判断即可.

  • 代码:

    class Solution {
    public:
        /**
         * 返回这样的数之和
         * @param n int整型 数的长度
         * @param m int整型 各个为之和
         * @return long长整型
         */
        long long sum(int n, int m) {
            // write code here
           n--;
      	int t=1;
      	long long ans=0;
        long long cnt=0;
      	while(n--){
      		t*=10;
      	}
      	for(int i=t;i<t*10;++i){
      		int tmp=i;
      		cnt=0;
      		while(tmp){
      			cnt+=tmp%10;
      			tmp/=10;
      		}
      		if(cnt==m) ans+=i;
      	}
            return ans;
        }
    };
    
posted @ 2020-07-17 15:02  _Kolibri  阅读(147)  评论(0)    收藏  举报