English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

1.
n的平方:輸入的n要可以接受到long的極值
2.
2的n次方:原則上與上題相同.但輸出結果能到200位數即可(array設到200位就好)

2006-05-17 10:46:19 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 程式設計

1 個解答

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 ");   System.exit(1);  }  long l = Long.parseLong(args[0]);  BigNumber bg = new BigNumber();  int[] sqr = bg.squareOf(l);  bg.printReversedIntArray(sqr);  System.out.println();  int[] powerTwo = bg.twoToPowerOf(l);  bg.printReversedIntArray(powerTwo);  System.out.println(); }}

2006-05-19 10:13:51 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers