1 条题解
-
0
练72.2 n-1位数
解题思路
把数作为字符串读入,删除首字符,再去掉剩余串的前导0;剩余全0则输出0。
正确性说明
依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。
易错点
题目n-1位指除去最高位后的后缀,不是n减1。
复杂度
总数字位数D,时间O(D),空间O(最长位数)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int M; cin >> M; while (M--) { string s; cin >> s; s.erase(s.begin()); size_t p = s.find_first_not_of('0'); cout << (p == string::npos ? "0" : s.substr(p)) << "\n"; } return 0; }
- 1