题目描述
猫猫有若干个雪糕棒排成一排,每个雪糕棒上有一个 \(0\sim 9\) 的数字,并且满足最左边的雪糕棒上写的数字不为 \(0\)。猫猫认为这一排雪糕棒从左到右依次构成了十进制正整数 \(n\)。
猫猫认为 \(0\) 是美好的,所以她会尽可能把 \(n\) 变成 \(0\),也就是把所有雪糕棒都拿走。
猫猫每次会进行一次操作。每次操作选择一个数字非 \(0\) 的雪糕棒,并将其减 \(1\)。这之后,如果最左边有连续的一些数字为 \(0\) 的雪糕棒(也即 \(n\) 出现了前导 \(0\)),猫猫会把这些雪糕棒拿走。
小老鼠会来捣乱,它会在某个时刻(可能是所有操作开始之前,也可能是猫猫任意一次操作之后)改变某个雪糕棒上的一个数字。小老鼠总共只能改变一个数字。
小老鼠希望操作次数尽量多,猫猫希望操作次数尽量少,所以她想知道二者都使用最优策略时,她的操作次数。
输入格式
本题有多组数据。
第一行一个正整数 \(T\) 表示数据组数。
对于每组数据:仅一行,一个正整数 \(n\)。
输出格式
共 \(T\) 行,每行一个整数,表示答案。
样例输入
2
1100
11332132121
样例输出
11
28
提示
对于所有数据,\(1 \leq T \leq 3333\),\(1 \leq n \leq 9\ 999\ 999\ 999\ 999(=10^{13} - 1)\),毕竟猫猫最多一捆只有 \(13\) 根雪糕嘛。
读完题目后,不难看出,如果想要保证操作次数多,最好的方法应该是一开始就把一个 \(0\) 变成 \(9\) ,直接增加了九次
如果一开始都是非 \(0\) 的数,还是可以看出,在某一时刻,必定有一个数为 \(1\) ,那么把 \(1\) 变成 \(9\) ,可以增加八次
所以答案便是所有数之和,再加上 \(8\) 或 \(9\)
\(Code:\)
#include<bits/stdc++.h>
using namespace std;
int t;
int main(){
scanf("%d",&t);
while(t--){
string x;cin>>x;
int ans=0,flag=0;
for(int i=0;i<x.size();i++){
ans+=x[i]-'0';
if(x[i]=='0') flag=1;
}
if(flag) printf("%d\n",ans+9);
else printf("%d\n",ans+8);
}
return 0;
}
标签:Popsicle,leq,猫猫,雪糕,999,int,操作
From: https://www.cnblogs.com/HEIMOFA/p/17421994.html