给定一个数,如何用平衡三进制表示,就像5= 9-3-1?
有时候,觉得平衡三进制很有用处,既有加法,也有减法。
#include <iostream>
using namespace std;
void transform_ternary3 (int num){
int m = 0;
vector<int> seri;
if (!num){
cout << 0 <<endl;
return;
}
int flag = 1;
if (num <0){
num = -num;
flag = -1;
}
int s= 1;
int t = 1;
int n = 0;
while(num){
m = num % 3;
if (m == 2){
num = num + 1;
m = -1;
}
t = m * s * flag;
if (t >0){
if (!n)
cout <<t;
else
cout <<"+"<<t;
n=1;
}
else if (t <0){
cout << t;
n = 1;
}
num = num / 3;
s *=3;
}
cout << endl;
}
int main(){
int num ;
for ( int i = 0 ;i < 20;i++){
cout << i <<"= ";
transform_ternary3(i);
cout <<-i <<"= ";
transform_ternary3(-i);
}
system("pause()");
}