【牛客编程巅峰赛S1第3场】位数求和
位数求和
https://ac.nowcoder.com/acm/problem/208125
题目
所有的长度为 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; } };