火星A+B
不要转换为10进制再加,直接按位加,然后进位即可
scanf("%c%c")第二位可以读取到’\n’
#include <cmath>
#include <iostream>
#include <queue>
#include <sstream>
#define LL long long
using namespace std;
const int number[]={2 ,3, 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29,
31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71,
73 , 79 , 83 , 89 , 97 , 101 , 103 , 107 , 109 , 113};
stringstream ss;
int main(){
string s1,s2;
while(cin >> s1 >> s2){
int num1[30]={0},num2[30]={0},num11[30]={0},num22[30]={0};;
if(s1=="0" && s2=="0") break;
for(int i=0;i<s1.size();i++){
if(s1[i]==',') s1[i]=' ';
}
for(int i=0;i<s2.size();i++){
if(s2[i]==',') s2[i]=' ';
}
ss << s1;
int k,l1=0,l2=0;
for(int i=0;ss >> k;i++){
num1[i]=k;
l1++;
}
for(int i=0;i<l1;i++){
num11[i]=num1[l1-i-1];
}
ss.clear();
ss << s2;
for(int i=0;ss >> k;i++){
num2[i]=k;
l2++;
// cout << k << ' ';
}
ss.clear();
for(int i=0;i<l2;i++){
num22[i]=num2[l2-i-1];
}
for(int i=0;i<30;i++){
num22[i]=num11[i]+num22[i];
// cout << num22[i] << ' ';
}
for(int i=0;i<30;i++){
if(num22[i]>=number[i]){
num22[i+1]++;
num22[i]-=number[i];
}
}
bool flag=false;
for(int i=29;i>=0;i--){
if(num22[i]!=0 || flag){
flag=true;
cout << num22[i];
if(i!=0) cout << ',';
}
}
cout << endl;
}
}