2014-10-19 101 views
4

我的目標是將十進制數轉換爲平衡三元。從十進制轉換爲不平衡三元組只需要除以3並跟蹤餘數。一旦我擁有數字的不平衡三元表示,我似乎無法弄清楚如何「平衡」它。如何從不平衡轉換爲平衡三態?

例如:十進制中的15位在不平衡三元組中爲120,在平衡三元組中爲+ - 0。我如何從120到+ - 0?我無法弄清楚如何處理不平衡三元表示中的2。

謝謝!

+1

維基百科有答案。 – user3386109 2014-10-20 00:51:07

+0

真的嗎?我在維基百科看到了這部分,但我無法弄清楚T的含義。我認爲這種方法很混亂,除非你願意解釋它! – corecase 2014-10-20 01:05:53

+0

對於平衡三元符號,您使用'+''''和'0'。維基百科分別使用'1'''''和''''。維基百科與'2'有什麼關係? – user3386109 2014-10-20 01:17:57

回答

4

請注意,在三元組中的2是+ - 在平衡三元中,或在小數2 = 3 - 1。因此,如果您從一個填充0,1和2的數組開始,只需用-1替換每2;在左邊的數字上加1。 (確保你在數字的開頭有一個額外的0,至少如果它以2開頭)。根據你如何進行替換,你可能還需要用0替換3s,像往常一樣向左加1。然後重複這個過程,直到不再有2s(或3s)。看到它的

2

的一種方法是,如果你得到的餘數2x剩餘商,就相當於得到一個的-1其餘與x+1剩餘商。

然後轉換它就像簡單轉換到三元基地,只需一次額外的檢查。

String output=""; 
while (n>0) { 
    rem = n%3; 
    n = n/3; 
    if (rem == 2) { 
     rem = -1; 
     n++; 
    } 
    output = (rem==0?'0':(rem==1)?'+':'-') + output; 
} 

正在運行的程序可以找到here