反复取十进制末位并除以 10,累加所有数位。
OJ: shumeng
题目 ID: CSP201512A
难度:入门
标签:模拟数位
日期: 2026-07-31 16:21
形式化题目
给定一个非负整数
思路
十进制数位有两个基本运算:
n % 10取出最低位;n / 10删除最低位。
不断重复这两个操作并累加取出的最低位,直到 n 变为 0 即可。注意
代码
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-31 16:21
* update_at: 2026-08-17 22:59
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int answer = 0;
// n%10 取出末位累加,n/10 删除末位,直到 n 变为 0。
while (n > 0) {
answer += n % 10;
n /= 10;
}
cout << answer << '\n';
return 0;
}复杂度
- 时间:设数位数为
, , 。 - 空间:常量空间,
。
总结
取模和整除是十进制数位模拟的基本操作。本题是数位类问题的入门题,后续的数位分离、数位统计题都会用到同样的 % 与 / 组合。