動態數組存放了一些個位數字(正數),組成一個大數。將這個數加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
注:此題只需要考慮最後一位加一後最後一位是否爲10,如果爲10需要考慮進位,並置最後一位爲0,即只有最後一位爲9,加一後需要進位。進位後,首位如果爲10表明原數的位數需要增加,即9 9 9 9 9變爲1 0 0 0 0 0。
#include <stdio.h>
#include <malloc.h>
int main(int argc, char **argv) {
int i, n;
scanf("%d", &n);
int *a = (int *) malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
a[n-1] += 1;
if(a[n-1] == 10)
{
for (i = n-1; i > 0; i--)
{
if (a[i] == 10)
{
a[i] = 0;
a[i-1] += 1;
}
}
if (a[0] == 10) {
printf("1 ");
for (i = 1; i < n; i++)
printf("0 ");
printf("0");
} else {
for (i = 0; i < n - 1; i++)
printf("%d ",a[i]);
printf("%d",a[n-1]);
}
}else{
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
return 0;
}