动态数组存放了一些个位数字(正数),组成一个大数。将这个数加1。
例如:
A = [2,3,1,1,4],
return [2,3,1,1,5]
A = [7,8,9],
return [7,9,0].
格式:
第一行输入一个正整数n,接下来的一行,输入数组A[n](每一位都是正数且为个位数)。
最后输出新的数组。
样例1
输入:
5 8 9 9 9 9
输出:
9 0 0 0 0
#include <iostream>
using namespace std;
int* onePlus(int n, int A[])
{
if (A[n - 1] <= 8)//最简单的情况,直接加1
{
A[n - 1]++;
return A;
}
int i = n - 1;
while (A[i] == 9 && i>=0)
{
if(i==0)//考虑9 9 9 9 9的情况,在前面输出1,再输出数组
{
A[i]=0;
cout<<"1"<<' ';
return A;
}
A[i] = 0;//某一位是9的情况
if (A[i - 1] < 9)
{
A[i - 1]++;
return A;
}
else
i--;
}
}
int main()
{
int n, *result;
cin >> n;
int *A = new int[n];
for (int i = 0; i<n; i++)
cin >> A[i];
result = onePlus(n, A);
for (int j = 0; j<n; j++)
{
cout << *(result + j)<<' ';
}
delete[]A;
A = NULL;
return 0;
}