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:45 江西
米哈游笔试还有什么题型呢?
点赞 回复 分享
发布于 2023-04-17 20:21 湖南

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
2
9
分享

创作者周榜

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