1.
n的平方:輸入的n要可以接受到long的極值
2.
2的n次方:原則上與上題相同.但輸出結果能到200位數即可(array設到200位就好)
2006-05-17 10:46:19 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 ➔ 程式設計
public class BigNumber { /* * 傳回一個整數陣列,內容為 n 的平方值。 */ public int[] squareOf(long n) { int[] orig = longToArray(n); int[] result = new int[50]; for (int i = 0; i < orig.length; i++) { for (int j = 0; j < orig.length; j++) { result[i+j] += orig[i] * orig[j]; } } return packArray(result); } /* * 傳回一個整數陣列,內容為 2 的 n 次方。 * 若其結果超過 200 位數,則僅輸出最末 200 位數。 */ public int[] twoToPowerOf(long n) { int[] orig = longToArray(n); int[] result = new int[200]; result[0] = 2; for (long i = 0L; i < n-1; i++) { for (int j = 0; j < result.length; j++) { result[j] = result[j] << 1; } result = packArray(result); } return result; } /* * 將長整數 n 以整數陣列型態表示。 */ int[] longToArray(long n) { int[] orig = new int[25]; for (int i = 0; i < 25; i++) { orig[i] = (int)(n % 10); n /= 10; } return orig; } /* * 將整數陣列做十進位處理,以保持每個元素皆為小於 10,即個位數。 */ int[] packArray(int[] orig) { for (int i = 0; i < orig.length-1; i++) { int x = orig[i] % 10; orig[i+1] += orig[i] / 10; orig[i] = x; } return orig; } /* * 將整數陣列做反序列印,即將代表個位數, * 索引值為零的數字最後一個印出。 */ public void printReversedIntArray(int[] orig) { boolean b = false; for (int i = orig.length-1; i >= 0; i--) { if (orig[i] != 0) { if (!b) b = true; System.out.print(orig[i]); } else { if (b) System.out.print(orig[i]); } } } public static void main(String[] args) { // 執行方式: java BigNumber 長整數 if (args.length == 0) { System.out.println("java BigNumber
2006-05-19 10:13:51 · answer #1 · answered by ? 7 · 0⤊ 0⤋