我的目標是將十進制數轉換爲平衡三元。從十進制轉換爲不平衡三元組只需要除以3並跟蹤餘數。一旦我擁有數字的不平衡三元表示,我似乎無法弄清楚如何「平衡」它。如何從不平衡轉換爲平衡三態?
例如:十進制中的15位在不平衡三元組中爲120,在平衡三元組中爲+ - 0。我如何從120到+ - 0?我無法弄清楚如何處理不平衡三元表示中的2。
謝謝!
我的目標是將十進制數轉換爲平衡三元。從十進制轉換爲不平衡三元組只需要除以3並跟蹤餘數。一旦我擁有數字的不平衡三元表示,我似乎無法弄清楚如何「平衡」它。如何從不平衡轉換爲平衡三態?
例如:十進制中的15位在不平衡三元組中爲120,在平衡三元組中爲+ - 0。我如何從120到+ - 0?我無法弄清楚如何處理不平衡三元表示中的2。
謝謝!
請注意,在三元組中的2是+ - 在平衡三元中,或在小數2 = 3 - 1。因此,如果您從一個填充0,1和2的數組開始,只需用-1替換每2;在左邊的數字上加1。 (確保你在數字的開頭有一個額外的0,至少如果它以2開頭)。根據你如何進行替換,你可能還需要用0替換3s,像往常一樣向左加1。然後重複這個過程,直到不再有2s(或3s)。看到它的
的一種方法是,如果你得到的餘數2
與x
剩餘商,就相當於得到一個的-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。
維基百科有答案。 – user3386109 2014-10-20 00:51:07
真的嗎?我在維基百科看到了這部分,但我無法弄清楚T的含義。我認爲這種方法很混亂,除非你願意解釋它! – corecase 2014-10-20 01:05:53
對於平衡三元符號,您使用'+''''和'0'。維基百科分別使用'1'''''和''''。維基百科與'2'有什麼關係? – user3386109 2014-10-20 01:17:57