2016-11-07 7 views
2

Ich habe diese Methode:Java erstellen entgegengesetzte Methode (Gleichung fragen)

//ternary can only have: 0,1,2 
public int getNumber(int[] ternary){ 
    int lt = ternary.length; 
    int number = 0; 
    for(int i = 0; i < lt; i++){ 
     int idx = ternary[i]; 
     number += (idx * Math.pow(-3, i)); 
    } 
    return number; 
} 

Und ich brauche eine Methode, die die inverse tut:

public int[] getArray(int n){ 
    //I need to figure out how to find the size of array 
    //And how to invert that equation. 
} 
+0

das scheint nicht viel Logik ... entgegengesetzte Methode kann mehrere Arrays zurückgeben, die das gleiche "int" als Ergebnis geben –

+0

dies sieht aus wie eine seltsame Art der Konvertierung zwischen den Nummern der Basis 3 und Zahlen der Basis 10 ... Aber Ich verstehe nicht, warum die Basis in 'Mathe, pow (-3, i)' negativ ist ... – ParkerHalo

+0

also, wenn du 2 * 3^3 + 5 * 3 + 15 hast, bekommst du 84 und per inverse meinst du das Zersetzung von 84 in JEDER möglichen Basis? –

Antwort

0

Ich glaube, das eine Hausaufgaben Frage ist, so Du musst alleine daran arbeiten.

Hier ist ein Hinweis.

Lassen Sie p = n/9 und q = n % 9. Beachten Sie, dass n = p * 9 + q.

lassen nun t = q wenn q < 3 und q - 9 wenn q >= 3. Auch s = p wenn q < 3 und p + 1 wenn q >= 3.

Beachte wieder, dass n = s * 9 + t.

t Ergebnisse in Werte 0, 1, 2, -3, -2, -1, -6, -5, -4 die leicht abgebildet werden 00 ... 22 Ziffern. Dies gibt Ihnen zwei letzte Ziffern. Sie bleiben mit s * 9 für die ersten Ziffern.

Ich hoffe, Sie können es von hier aus auf eigene Faust erhalten.