题面大意
对于一个整数 m m m,减去最小的数 d d d 使它成为 10 10 10 的正整数次幂。
题目分析
直接模拟即可,这里给出两种策略:
- 将 m m m 转化为字符串处理,第零位减去 1 1 1,剩下直接输出即可。注意前导零的处理以及 d d d 为零的特判。
- 暴力寻找 m m m 减完后剩余的数,直接用 m m m 减去这个数即可。方法简单,没有那么多麻烦的判定。
代码
第一种
#include <bits/stdc++.h>
using namespace std;
int t, l;
string s;
signed main() {
cin >> t;
while (t--) {
cin >> s;
s[0] -= 1;
l = 0;
while(s[l] == '0' && l < s.length())
l++;
if (l == s.length())
l--;
for (int i = l; i < s.length(); i++)
cout << s[i];
cout << "\n";
}
return 0;
}
第二种
#include <bits/stdc++.h>
using namespace std;
#define int long long
int t, num, k, num1, rest;
signed main() {
cin >> t;
while (t--) {
rest = 1;
cin >> num;
num1 = num;
while (num1)
num1 /= 10, rest *= 10;
cout << num - rest / 10 << "\n";
}
return 0;
}
完结撒花!★,°:.☆( ̄▽ ̄)/$:.°★ 。