第三场(A-位数求和)
链接:https://ac.nowcoder.com/acm/contest/6220/A
来源:牛客网
题目描述:
牛牛想知道所有的长度为n的数中,各个位上的数字之和为m的这些数的和是多少呢。给定n和m,求这些数的和。
输入
2,3
输出
63
说明:12 + 21 +30 = 63
备注:
解题思路:
暴力遍历,判断各数的各位数字之和是否等于m,满足条件的累加即可。
代码:
class Solution {
public:
/**
* 返回这样的数之和
* @param n int整型 数的长度
* @param m int整型 各个为之和
* @return long长整型
*/
long long sum(int n, int m) {
// write code here
long long res = 0;
int start = pow(10, n - 1), end = pow(10, n) - 1;
for(int i = start; i <= end; ++i) {
if(fun(i) == m) res += i;
}
return res;
}
long long fun(int k) {
long long res = 0;
while(k) {
res += k % 10;
k /= 10;
}
return res;
}
};