杭電OJ 1230 火星A B

2021-08-27 09:22:03 字數 1325 閱讀 4755

problem description

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

input

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

output

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

sample input

1,0 2,1 4,2,0 1,2,0 1 10,6,4,2,1 0 0 

sample output

1,0,1 1,1,1,0 1,0,0,0,0,0 

source

浙大計算機研究生複試上機考試-2023年

recommend

jgshining

題目倒是不難!但是有幾點需要注意一下!

1.陣列要盡量開大,我前幾次陣列開小了,提交上去居然杭電oj報「integer_divide_by_zero 在進行整數除法的時候出現了除數為零的異常」的錯誤,而實際上我檢查了幾遍,我的程式裡並沒有那種錯誤,由此可見,oj的判斷不一定正確,不要過分相信那個東西,以後為了避免那種令人糾結卻找不出原因的錯誤,陣列盡量開大,總之記憶體不要錢!

2.總結一些技巧吧!比如說求素數的時候,你編乙個函式出來,我還不如直接把那些素數寫出來,這就是所謂的以空間換時間!

3.總體來說,是道水題!

//火星a+b

#include#includeusing namespace std;

int prime[30]=;

int temp[3]=;

int main()

else

}k++;

for(i=strlen(b)-1,j=0,m=0;i>=0;i--)

else

}j++;

if(k>=j) max=k;

else max=j;

memset(sum,0,sizeof(sum));

for(i=0;i=1;i--)

printf("%d,",sum[i]);

cout<=1;i--)

printf("%d,",sum[i]);

cout<} }

return 0;

}

杭電ACM 1230 火星A B

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

hdu 1230(火星A B,進製)

個人感覺如果進製轉換的話太麻煩,直接模擬加法,不同位數採用不同的進製加法。但是還是wa了兩次,沒有處理好餘數的問題,當不能進製時。2013 04 23 cpp include stdio.h include string.h include math.h int prime 25 cnt void ...

杭電oj 1229 還是A B

problem description 讀入兩個小於10000的正整數a和b,計算a b。需要注意的是 如果a和b的末尾k 不超過8 位數字相同,請直接輸出 1。input 測試輸入包含若干測試用例,每個測試用例佔一行,格式為 a b k 相鄰兩數字有乙個空格間隔。當a和b同時為0時輸入結束,相應的...