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 0sample output
1,0,1 1,1,1,0 1,0,0,0,0,0source
浙大計算機研究生複試上機考試-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時輸入結束,相應的...