题解 | #可达鸭数学#
可达鸭数学
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;
}