2016-11-07 49 views
2

我有这样的方法:Java中创建一个相反的方法(公式问)

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

我需要一个做反向的方法:

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

似乎没有太多的逻辑......相反的方法可以返回多个数组,给出相同的'int'作为结果 –

+0

这看起来像一些奇怪的基数3和基数10的数字之间的转换方式......但我不明白为什么'Math,pow(-3,i)'中的基数是负的... – ParkerHalo

+0

所以如果你有2 * 3^3 + 5 * 3 + 15,你得到84,反过来你的意思是84分解在任何可能的基地? –

回答

0

我相信这是一个家庭作业的问题,所以你必须自己做。

这是一个提示。

p = n/9q = n % 9。请注意0​​。

现在让t = q如果q < 3q - 9如果q >= 3。 另外s = p如果q < 3p + 1如果q >= 3

再次注意,n = s * 9 + t

t结果值012-3-2-1-6-5-4这很容易映射到到数字00 ... 22。这给你两个最后的数字。您的第一位数字为s * 9

我希望你能从这里得到它自己。

相关问题