1016: 火星A+B
時間限制: 1Sec 內存限制: 32 MB提交:223 解決: 85
題目描述
讀入兩個不超過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
提示
來源
#include<iostream>
#include <string>
#include <string>
using namespace std;
int func_sus(int i);
int main()
{
//cout<< "Hello world!"<< endl;
intA[25],B[25];
stringstrA,strB;
inti,j,power,k;
intlengthA,lengthB;
while(cin>>strA)
{
cin>>strB;
if(strA =="0" && strB =="0")
{
break;
}
for(i=0;i<25;i++)
{
A[i] =B[i]=0;
}
int c =0;
int n = strA.size();
int sum=0;
j=0;
power =0;
for(i=n-1;i>=0;i--)
{
//j=0;
if(strA[i] !=',')
{
if(power== 0)
{
sum=(int)strA[i]-48;
power++;
}
else
{
inttem = 1;
for(k=0;k<power;k++)
{
tem= tem*10;
}
sum= sum+((int)strA[i]-48)*tem;
power++;
}
{
//cout<< "Hello world!"<< endl;
intA[25],B[25];
stringstrA,strB;
inti,j,power,k;
intlengthA,lengthB;
while(cin>>strA)
{
cin>>strB;
if(strA =="0" && strB =="0")
{
break;
}
for(i=0;i<25;i++)
{
A[i] =B[i]=0;
}
int c =0;
int n = strA.size();
int sum=0;
j=0;
power =0;
for(i=n-1;i>=0;i--)
{
//j=0;
if(strA[i] !=',')
{
if(power== 0)
{
sum=(int)strA[i]-48;
power++;
}
else
{
inttem = 1;
for(k=0;k<power;k++)
{
tem= tem*10;
}
sum= sum+((int)strA[i]-48)*tem;
power++;
}