4.15米哈游笔试1题

#include<iostream>
#include<cmath>
using namespace std;
int x;

//将数十进制x转化为三进制,并且每一位前面都设为'+';
string to_three(int x){
    string s;
    while(x){
        s.push_back('+');
        s.push_back(x % 3 + '0');
        x /= 3;
    }
    return s;
}


int main(){
    cin >> x;
    string str = to_three(x);
    //cout << str << endl;
    //三进制只保留0和1, 将三进制中含有2的的位变为-1,并且向高位进1 (因为2*3^n = +1 * 3^n+1 + -1 * 3^n)
    int len = str.length();
    for(int i = 1; i <= len / 2; i++){
        if(str[2*i - 1] == '2'){
            str[2*i - 2] = '-';
            str[2*i - 1] = '1';
            if(2*i + 1 > len) str.push_back('+'), str.push_back('1');
            else str[2*i + 1]++;
        }
        else if(str[2*i - 1] == '3'){
            str[2*i - 1] = '0';
            if(2*i + 1 > len) str.push_back('+'), str.push_back('1');
            else str[2*i + 1]++;
        }
    }
    //cout << str << endl;
    //从高位开始输出
    len = str.length();
     for(int i = len - 2; i >= 0; i -= 2){
         if(str[i + 1] - '0' != 0){
             if(i != len - 2 && str[i] == '+') cout << '+';
             else if(i != len - 2) cout << '-';
             cout << (int)pow(3, i / 2);
         }
     }
    return 0;
}
#我的实习求职记录##笔试#
全部评论
米哈游笔试还有什么题型呢?
点赞 回复 分享
发布于 2023-04-17 20:21 湖南
米哈游什么时候开始面试?
点赞 回复 分享
发布于 2023-04-17 20:45 江西

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
2
9
分享
牛客网
牛客企业服务