hdu1230 大數加法 進製轉換

2021-09-02 18:26:59 字數 1679 閱讀 5472

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

將兩種演算法結合起來求解

#include#include#include#include#include#include#includeusing namespace std;

int prime[26];

char num1[1000];

char num2[1000];

void is_prime()

if(ok)prime[cnt++]=i;

if(cnt>=26)break;

}}int main()

weight=0;

for(;pos2>=0;pos2--)

s.push((x+r)%prime[digit]);

r=(x+r)/prime[digit];

pos1--;pos2--;digit++;

}if(r) s.push(r);

printf("%d",s.top());s.pop();

while(!s.empty()) printf(",%d",s.top()),s.pop();

printf("\n");

}return 0;

}

順便帖一下劉老師的大數演算法

#include#include#include#include#include #includeusing namespace std;

struct biginteger // 建構函式 給建構函式的引數提供預設值

biginteger operator = (long long num) while (num > 0);

return *this;

} biginteger operator = (const string& str)

return *this;

} biginteger operator + (const biginteger& b) const

return c;

}};ostream& operator << (ostream &out, const biginteger& x)

return out;

}istream& operator >> (istream &in, biginteger& x)

#include#includesets;

mapm;

int main()

hdu 1230(火星A B,進製)

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

hdu 1002大數加法

include includevoid daoxu int str,int n 定義乙個倒序陣列的函式,n為陣列中元素個數 void daoxu int str,int n else 找出最長數 for int i 0 i 0 j printf for maxline 0 maxline print...

1005 大數加法

1005 大數加法 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 題目位址 給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147...