九度論壇--上機題1016:火星A+B

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>
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++;
    }
          
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章