P9538 题解

题目传送门

思路

这题我们可以分情况讨论:

  1. ai=9a_i=9 时,不变;
  2. ai=0a_i=0 时且 i0i\ne0 时,减 11
  3. 其它情况,是加 11

注意事项

  1. 多组数据要清空;
  2. 注意退位;
  3. 注意第 00 位退位之后就不能重新加 11 了,但是 a=0a=0 的情况还是能加 11 的;
  4. 注意要倒着枚举。

代码

# 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;
}
posted @ 2023-08-15 21:26  Vitamin_B  阅读(12)  评论(0)    收藏  举报  来源