题目本质是把一个数每一位的数反复相加,直到最后变成一个一位数。第一眼想到while循环累加每一位,但一次累加最后的数字可能还不是一位数,考虑优化想到了把低位数字对结果的贡献合并到高位部分,单循环压缩数值,最后的那一位就是结果。整个循环我们只需要重复三件事,直到n变成一个一位数:用n%10拿出最后一位的个位数字用n/10删掉最后一位,留下前面的数把前面的数 + 刚才拿出来的个位数字最后附上代码: #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; while (n >...