2018年 第九屆藍橋杯 Java B組 複數冪

3.複數冪

設i爲虛數單位。對於任意正整數n,(2+3i)^n 的實部和虛部都是整數。
求 (2+3i)^123456 等於多少? 即(2+3i)的123456次冪,這個數字很大,要求精確表示。
答案寫成 "實部±虛部i" 的形式,實部和虛部都是整數(不能用科學計數法表示),中間任何地方都不加空格,實部爲正時前面不加正號。(2+3i)^2 寫成: -5+12i,
(2+3i)^5 的寫成: 122-597i
注意:需要提交的是一個很龐大的複數,不要填寫任何多餘內容。

【答案】:由於此題目的數據量極大用到java中的大數類,輸出結果在控制器上無法顯示完整,要輸出到文件中。

import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;

public class Main {
	public static void main(String args[]) throws IOException {
		BigInteger a = new BigInteger("2");
		BigInteger b = new BigInteger("3");
		BigInteger c = new BigInteger("1");
		BigInteger d = new BigInteger("0");
		BigInteger e;
		FileWriter f = new FileWriter("x.txt");
		for (int i = 0; i < 123456; i++) {
			e = c;
			c = a.multiply(c).subtract(b.multiply(d));// c=a*c-b*d
			d = a.multiply(d).add(b.multiply(e));// d=a*d-b*e
		}
		f.write(c + "+" + d + "i");
		f.close();
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章