平衡三进制2 | ||||||||||||||||||||||||||
Acceteped : 15 | Submit : 25 | |||||||||||||||||||||||||
Time Limit : 1000 MS | Memory Limit : 65536 KB | |||||||||||||||||||||||||
Description | ||||||||||||||||||||||||||
题目描述平衡三进制分别使用字符'-','0','1'表示-1,0,1。下表表示从0到10的十进制数对应的平衡三进制的值。
输入第一行是一个整数N,表示样例的个数。以后每行一个非负整数x,0≤x≤2^31-1。 输出每行输出一个样例的结果。 样例输入8 0 1 2 14 19 27 61 37726 样例输出0 1 1- 1--- 1-01 1000 1-1-1 1-0-1-1-1-1 |
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a,i,n;
char s[1000];
cin>>n;
while(n--)
{
cin>>a;
i=0;
if(a==0) cout<<'0'<<endl;
else
{
while(a)
{
if(a%3==2)
{
s[i]='-';
a=a/3+1;
}
else if(a%3==1)
{
s[i]='1';
a=a/3;
}
else
{
s[i]='0';
a=a/3;
}
i++;
}
for(i=i-1;i>=0;i--) cout<<s[i];
cout<<endl;
}
}
return 0;
}