题目
所有的长度为 n 的数中,各个位上的数字之和为 m 的这些数的和是多少呢。给定 n 和 m,求这些数的和。
解题思路
使用暴力法:
长度为 的数的范围是
。遍历该范围的数值,求出每个数的各个位上的数字之和
是否与
相等,
若相等,将这个数 累计加入最终结果
。
C++代码
class Solution {
public:
/**
* 返回这样的数之和
* @param n int整型 数的长度
* @param m int整型 各个为之和
* @return long长整型
*/
long long sum(int n, int m) {
// write code here
long long ans = 0;
int start = pow(10, n-1);
int end = pow(10, n) - 1;
for(int i=start; i<=end; ++i){
int tmp = i;
int s = 0;
while(tmp){
s += tmp % 10;
tmp /= 10;
}
if(s == m){
ans += i;
}
}
return ans;
}
}; 
京公网安备 11010502036488号