2010年3月4日 星期四

Problem 424 Integer Inquiry,大數加法

這題就是簡單的大數加法,只要會大數加法,很輕易就寫出來了。

先創建一個結構(struct),AN1 和 AN2,AN1為累加結果,AN2讀入每次輸入的大數並與AN1相加:
#define NUMLEN 200

struct AddNum
{
int num[NUMLEN];
int length;
};

struct AddNum AN1, AN2;
char numStr[101];

再讀入字串並反轉為整數陣列(integer array):
gets(numStr);
if (numStr[0] == '0') break;
AN2.length = strlen(numStr) - 1;
for (i = AN2.length, j = 0; i >= 0; i --, j ++)
AN2.num[j] = numStr[i] - '0';
for (i = 0; i < NUMLEN; i ++)
{
AN1.num[i] += AN2.num[i];
if (AN1.num[i] >= 10)
AN1.num[i + 1] ++, AN1.num[i] %= 10;
}

最後AN1和AN2相加:
for (i = 0; i < NUMLEN; i ++)
{
AN1.num[i] += AN2.num[i];
if (AN1.num[i] >= 10)
AN1.num[i + 1] ++, AN1.num[i] %= 10;
}

再將結果印出就可以了。
By David.K

p424題目連結
回ACM題庫目錄
回首頁

沒有留言: