2016-11-07 5 views
2

Je cette méthode:Java créer une méthode opposée (équation demander)

//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; 
} 

Et je besoin d'une méthode qui fait l'inverse:

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

cela ne semble pas beaucoup de logique ... méthode inverse peut renvoyer plusieurs tableaux qui donnent le même 'int' par conséquent –

+0

cela ressemble à une façon étrange de conversion entre les nombres de base 3 et les nombres de base 10 ... Mais Je ne comprends pas pourquoi la base dans 'Math, pow (-3, i)' est négative ... – ParkerHalo

+0

donc si vous avez 2 * 3^3 + 5 * 3 + 15 vous obtenez 84 et par inverse vous voulez dire le décomposition de 84 dans n'importe quelle base possible? –

Répondre

0

Je crois que c'est une question de devoirs, donc vous devez y travailler seul.

Voici un indice.

Soit p = n/9 et q = n % 9. Notez que n = p * 9 + q.

Maintenant laissez t = q si q < 3 et q - 9 si q >= 3. Egalement s = p si q < 3 et p + 1 si q >= 3.

Notez à nouveau que n = s * 9 + t.

t résultats en valeurs 0, 1, 2, -3, -2, -1, -6, -5, -4 qui sont facilement mis en correspondance à un chiffre 00 ... 22. Cela vous donne deux derniers chiffres. Il vous reste s * 9 pour les premiers chiffres.

J'espère que vous pouvez l'obtenir d'ici par vos propres moyens.