题解:CF2093B Expensive Number
洛谷CF2093B || CodeForces 2093 B
简要题意
定义一个数
思路
当只有一个非
我们选取最后一个非零数位
- 当
i < end 时,若a_i 不为0 ,保留后花费必然增加,所以必须删除。在删除所有不为0 的数后,所有前面的0 变为前导零,并不会增加花费,不必删除。 - 当
i>end 时,所有数都是0 ,每有一个0 就会使分子变大,而分母不变,因此也必须删除。
综上,我们删除
#include <bits/stdc++.h>
using namespace std;
int t;
string s;
int main()
{
cin >>t;
while (t--)
{
cin >> s;
int cnt = 0, end = s.length() - 1;
for (int i = s.length() - 1; i >= 0; i--)
{
if (s[i] != '0') {end=i;break;}
}
for (int i = 0; i < s.length(); i++)
{
if (i==end) continue;
if (s[i] != '0' && i < end) cnt++;
if (s[i] == '0' && i > end) cnt++;
}
cout << cnt << endl;
}
}