您的位置:首页 > 其它

1298. 数制转换

2011-11-08 18:25 197 查看
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;

void change(long n)
{
string str;
int tmp=0;
int num;
while( n/3!=0 )
{
num=n%3+tmp;
if( num==2 )
{
tmp=1;
str='-'+str;
}
if( num==3 )
{
tmp=1;
str='0'+str;
}
if( num==0||num==1 )
{
tmp=0;
str=(char)(num+'0')+str;

}
n/=3;
}
num=n%3+tmp;
if( num==2 )
{
str="1-"+str;
}
if( num==3 )
{
tmp=1;
str="10"+str;
}
if( num==0||num==1 )
{
tmp=0;
str=(char)(num+'0')+str;

}
cout<<str<<endl;
}

void nchange(long n)
{
n=-n;
string str;
int tmp=0;
int num;
while( n/3!=0 )
{
num=-(n%3)+tmp;
if( num==-2 )
{
tmp=-1;
str='1'+str;
}
if( num==-3 )
{
tmp=-1;
str='0'+str;
}
if( num==0 )
{
tmp=0;
str='0'+str;

}
if( num==-1 )
{
tmp=0;
str='-'+str;
}
n/=3;
}
num=-(n%3)+tmp;
if( num==-2 )
{
tmp=-1;
str="-1"+str;
}
if( num==-3 )
{
tmp=-1;
str="-0"+str;
}
if( num==0 )
{
tmp=0;
str='0'+str;
}
if( num==-1 )
{
tmp=0;
str='-'+str;
}

cout<<str<<endl;

}

int main()
{
long n;
while( cin>>n )
{
if( n>=0 )
{
change(n);
}
if( n<0 )
{
nchange(n);
}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: