14067: 【原4067】整数加一
题目
题目描述
author: 程序设计思想与方法助教组黄海鑫 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4067
问题描述
编写一个程序,读入一个以字符串表示的非负整数(串中每个字符代表一个数字),输出该正整数加一后的结果。
输入输出描述
输入
- 输入一行为正整数字符串,该正整数最前不包含字符'0'(除非该正整数等于0),正整数字符串的长度小于50(即正整数的大小小于10^50)
输出
- 输出一行为加一后的正整数字符串
程序运行示例1
Sample Input 1
10000
Sample Output 1
10001
程序运行示例2
Sample Input 2
999999999
Sample Output 2
1000000000
注意
- 不要显示多余的提示信息,避免输出判定错误。
- 注意判断输出信息是否符合要求。
LuminousXLB's solution
// 4067. 整数加一
// #464144 正确 / 分数:100 / 时间:0ms / 内存:5248kb
#include <iostream>
using namespace std;
const char overflow = '9' + 1;
int main(int argc, char const *argv[]) {
char num[52] = { '0' };
char *p = num + 1;
int len = 0;
cin >> p;
while(p[len]) ++len;
++num[len];
for(int i = len; i > 0; --i) {
if (num[i] == overflow) {
num[i] = '0';
++num[i-1];
}
}
cout << num + '1' - num[0];
return 0;
}