P9538 题解
思路
这题我们可以分情况讨论:
- 当 时,不变;
- 当 时且 时,减 ;
- 其它情况,是加 。
注意事项
- 多组数据要清空;
- 注意退位;
- 注意第 位退位之后就不能重新加 了,但是 的情况还是能加 的;
- 注意要倒着枚举。
代码
# include <bits/stdc++.h> //万能头
using namespace std;
int t, sum;
string a;
int main () {
cin >> t;
while (t --) {
cin >> a;
sum = 0; //多组数据要清空
for (int i = a.size (); -- i;) { //倒着枚举
if (a[i] < '1') //进位 & a[i]=0 的情况
a[i] = '9', -- a[i - 1];
else if (a[i] < '9')
++ a[i];
sum += a[i] - '0';
}
if (a[0] < '9' && (a[0] > '0' || a.size () < 2))
++ a[0];
sum += a[0] - '0';
cout << sum << '\n';
}
return 0;
}

浙公网安备 33010602011771号