#include <stdio.h>//这题真没必要死磕,看通过率话就知道这题根本不是入门水平
#include <string.h>
void su(int
arr[]) { //将前25个素数(1,2,3,5,7...)赋给arr数组(从下标1开始)
int k, m = 1; //m记录将要获得第几个素数
for (int i = 1; m <= 25; i++) {
k = 1;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0)k = 0;
}
if (k == 1) {
arr[m] = i;
m++;
}
}
}
int jiecheng(int arr[], int
k) { //类似阶乘函数,将素数累乘,从arr[1]开始累乘到arr[k]
int result = 1;
for (int i = 1; i <= k; i++)
result *= arr[i];
return result;
}
int count(char str[], int len,
int arr[]) { //计算火星数的十进制数 ,其中str字符串为火星数
int k = 1, sum = 0, m; //k=1,对应火星数的个位
for (int i = len - 1; i >= 0;
i -= 2) { //从后往前遍历str,i-=2是为了将','字符也跳过
m = str[i] - '0';
if (str[i - 1] > '0' &&
str[i - 1] < '9') { //(例如10,2,1中第三位为两位数10,则将十位上的'1' (即str[--i])累加到m里)
m += (str[--i] - '0') * 10;
}
sum += jiecheng(arr, k++) *
m; // 当前火星数的第k位数 乘以 arr[1]*arr[2]*...*arr[k]
}
return sum;
}
int main() {
int arr[30], al, bl, q[100];
char a[50], b[50];
su(arr);
scanf("%s%s", a, b);
al = strlen(a);
bl = strlen(b);
int sum = count(a, al, arr) + count(b, bl, arr);
int i;
for (i = 1; sum != 0; i++) { //q[]得到倒序的火星数
q[i] = sum % arr[i + 1]; //%除arr[2]才会得到q[1]的值
sum = sum / arr[i + 1];
}
i--;
printf("%d", q[i--]);
for (; i >= 1; i--) { //最后反向输出
printf(",%d", q[i]);
}
return 0;
}