九度OJ 題目1016 火星A B

2021-07-04 07:29:18 字數 1009 閱讀 5940

一.

題目描述:

讀入兩個不超過25位的火星正整數a和b,計算a+b。需要注意的是:在火星上,整數不是單一進製的,第n位的進製就是第n個素數。例如:地球上的10進製數2,在火星上記為「1,0」,因為火星個位數是2進製的;地球上的10進製數38,在火星上記為「1,1,1,0」,因為火星個位數是2進製的,十位數是3進製的,百位數是5進製的,千位數是7進製的……

輸入:

測試輸入包含若干測試用例,每個測試用例佔一行,包含兩個火星正整數a和b,火星整數的相鄰兩位數用逗號分隔,a和b之間有乙個空格間隔。當a或b為0時輸入結束,相應的結果不要輸出。

輸出:

對每個測試用例輸出1行,即火星表示法的a+b的值。

樣例輸入:

1,0 2,1

4,2,0 1,2,0

1 10,6,4,2,1

0 0樣例輸出:

1,0,1

1,1,1,0

1,0,0,0,0,0

二.題目分析

剛看到這道題目,我真的是楞了,一心想著38為什麼表示成1,1,1,0,真的是百思不得其解,在網上看到一些解題報告,看到了長整數相加...好吧,終於開竅了,我真的是想多了...確實,這是一道長整數加法,這樣看來,題目並不難,但是一直wa,自己也測試了大資料,小資料,還是沒有找到錯誤原因,哎,對於不能提供錯誤樣例的評判系統,真的是讓人抓狂,這也是我一直熱愛usaco的原因。

在此還是貼出我的不知道錯因的錯誤**,歡迎各位行家指正,不勝感激!先貼出來,以後在改正吧,今天已經找bug精疲力盡...

三.**

#include #include #include #include int prime[51];

int isprime(int x)

return 1;

}void reverse(int *a,int an)

{ int i,j,temp;

for(i=0,j=an-1;ibn?an:bn,i=an,j=bn,temp;

while(i



題目1016 火星A B

題目描述 讀入兩個不超過25位的火星正整數a和b,計算a b。需要注意的是 在火星上,整數不是單一進製的,第n位的進製就是第n個素數。例如 地球上的10進製數2,在火星上記為 1,0 因為火星個位數是2進製的 地球上的10進製數38,在火星上記為 1,1,1,0 因為火星個位數是2進製的,十位數是3...

題目1016 火星A B

題目描述 讀入兩個不超過25位的火星正整數a和b,計算a b。需要注意的是 在火星上,整數不是單一進製的,第n位的進製就是第n個素數。例如 地球上的10進製數2,在火星上記為 1,0 因為火星個位數是2進製的 地球上的10進製數38,在火星上記為 1,1,1,0 因為火星個位數是2進製的,十位數是3...

Jobdu 題目1016 火星A B

題目描述 讀入兩個不超過25位的火星正整數a和b,計算a b。需要注意的是 在火星上,整數不是單一進製的,第n位的進製就是第n個素數。例如 地球上的10進 制數2,在火星上記為 1,0 因為火星個位數是2進製的 地球上的10進製數38,在火星上記為 1,1,1,0 因為火星個位數是2進製的,十位 數...