整体来说不难,就是在求余以后得到余数为2跟-2的情况需要特殊处理一下;一开始忘记了考虑有负数的情况,所以没有考虑到-2的变化
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int userNum;//the input number
while(cin >> userNum)
{
string outputNum = "";//the output string
if(userNum == 0)
{
cout << "0" << endl;
}//end if
else
{
int remainder = 0;//余数
int quotient = 0;//商
while(userNum != 0)
{
remainder = userNum % 3;
quotient = userNum / 3;
switch(remainder)
{
case 0:
userNum = quotient;
outputNum.push_back('0');
break;
case 1:
userNum = quotient;
outputNum.push_back('1');
break;
case 2:
userNum = quotient + 1;
outputNum.push_back('-');
break;
case -1:
userNum = quotient;
outputNum.push_back('-');
break;
case -2:
userNum = quotient - 1;
outputNum.push_back('1');
break;
}//end switch
}
for(int i = outputNum.length() - 1; i >= 0; i--)
{
cout << outputNum[i];
}
cout << endl;
}//end else
}//end while
return 0;
}