Skip to content

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;
}