题解 | #可达鸭数学#

可达鸭数学

https://ac.nowcoder.com/acm/contest/59248/A

每次模3,如果模后的结果为2或者-2,则用-1或1代替。这样做的代价就是要在模后的商加1或减1. 最后用一个容器接住模出来的数。最后倒序输出,用一个判断输出w,m,b即可。c++代码如下:

```#include<vector>
#include<cstdio>
using namespace std;
vector<int> convertToTernary(int n){
    vector<int> v;
    if(n==0){
            v.push_back(0);
            return v;
    }//特殊情况
    while(n != 0){
        int remainder = n % 3;//remainder为余数
        n = n / 3;
        if (remainder == 2) {
            v.push_back(-1);
            n++;//代替的代价
        }
        else if(remainder==-2){
         v.push_back(1);
            n--;//代替的代价
        }
        else{
            v.push_back(remainder);//如果不为2或-2,直接放进去
        }
    }
    return v;
}
int main() {
    int t;
    cin>>t;
    while(t--) {
        int num;
        cin>>num;
       vector<int> res=convertToTernary(num);
        for(int j = res.size() - 1; j >= 0; j--) {//倒序输出
           if(res[j]==1){
               cout<<'w';
           }else if(res[j]==-1){
               cout<<'m';
           }else{cout<<'b';}
        }
        cout<<endl;
    }
    return 0;
}
全部评论
牛逼牛逼牛逼
点赞 回复 分享
发布于 2023-06-03 19:06 湖南

相关推荐

评论
6
收藏
分享

创作者周榜

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