题解 | #火星A+B#
火星A+B
https://www.nowcoder.com/practice/46bb070835e548678c78477f1fb0b92e
#include <cstdio>
#include <iostream>
using namespace std;
#include <vector>
int main() {
int num[50]={0};
int k = 0, temp;
for (int i = 2; i < 1000; i++) {
temp = 0;
for (int j = 2; j < i; j++) {
if (i % j == 0)temp = 1;
}
if (temp == 0)num[k++] = i;
if (k == 50)break;
}
int a[51]={0};
int b[51]={0};
int sum[51]={0};
int a1=50,a2=50;
int n;
vector<int> vc;
vector<int> vx;
while(cin>>n){
vc.push_back(n);
char ch=cin.get();
if(ch==' '||ch=='\n')break;
}
while(cin>>n){
vx.push_back(n);
char ch=cin.get();
if(ch==' '||ch=='\n')break;
}
for(vector<int>::reverse_iterator it=vc.rbegin();it!=vc.rend();it++){
a[a1--]=*it;
}
for(vector<int>::reverse_iterator it=vx.rbegin();it!=vx.rend();it++){
b[a2--]=*it;
}
k=0;
int g=0;
for(int j=50;j>0;j--){
int x=num[k++];
sum[j]=(a[j]+b[j]+g)%x;
g=(a[j]+b[j]+g)/x;
}
for(int j=0;j<=50;j++){
if(sum[j]!=0){
k=j;
break;
}
}
for(int j=k;j<=50;j++){
cout<<sum[j];
if(j!=50)cout<<",";
}
cout<<endl;
return 0;
}
// 64 位输出请用 printf("%lld")
查看11道真题和解析