设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。 求 (2+3i)^123456 等于多少?
即(2+3i)的123456次幂,这个数字很大,要求精确表示。
答案写成 "实部±虚部i"
的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i
注意:需要提交的是一个很庞大的复数,不要填写任何多余内容。
解题思路:
显然这道题考察了大数类的运用,写完后运行发现myEclipes的Console窗口不能显示出运行结果,想到应该是结果的内容量超出了它的显示范围(虽然不能完整显示,但它的确是真实存在的,这时只需在控制台内按Ctrl +A全选后复制,再粘贴出来)。在这里我把结果直接输出到文件内。
import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) throws FileNotFoundException{
Scanner in=new Scanner(System.in);
PrintStream ps=new PrintStream(new FileOutputStream("file4.txt"));
System.setOut(ps);
BigInteger a=new BigInteger("2"),b=new BigInteger("3"),two=a,zero=new BigInteger("0"),a1=a,b1=b;
for(int i=1;i<123456;i++){
BigInteger temp=a.multiply(a1).subtract(b.multiply(b1));
b=a.multiply(b1).add(a1.multiply(b));
a=temp;
}
System.out.println(a+(b.compareTo(zero)>0?"+":"")+b+"i");
}
}