题解 | 火星A+B

火星A+B

https://www.nowcoder.com/practice/46bb070835e548678c78477f1fb0b92e

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int prime[25];
string num1,num2;
bool isprime(int n){
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}
void create_prime(){
    int index=0;
    int i=2;
    while(true){
        if(isprime(i)){
            prime[index++]=i;
        }
        i++;
        if(index==25){
            break;
        }
    }
}
int mars_to_int(string num){     //火星数转换成整数
    int ans=0;
    vector<int> num_;
    for(int i=0;i<num.size();i++){
        if(num[i]==','){
            continue;
        }
        int temp=0;
        while(num[i]!=','&&i<num.size()){
            temp*=10;
            temp+=(num[i]-'0');
            i++;
        }
        num_.push_back(temp);
    }
    reverse(num_.begin(),num_.end());
    for(int i=0;i<num_.size();i++){
        int temp=1;
        for(int j=0;j<i;j++){
            temp=temp*prime[j];
        }
        temp=num_[i]*temp;
        //cout<<temp<<endl;
        ans+=temp;
    }
    return ans;
}
string int_to_mars(int n){      //整数转换成火星数
    string ans;
    int i=0;
    while(n){
        int temp=n%prime[i];
        ans=to_string(temp)+ans;
        ans=','+ans;
        n=n/prime[i];
        i++;
    }
    ans=ans.substr(1);
    return ans;
}
int main(){
    create_prime();
    cin>>num1>>num2;
    int ans=mars_to_int(num1)+mars_to_int(num2);
    cout<<int_to_mars(ans)<<endl;
}

全部评论

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务