题解 | #火星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")