复数幂

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beilunc7/article/details/87006801

设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。 求 (2+3i)^123456 等于多少?
即(2+3i)的123456次幂,这个数字很大,要求精确表示。
答案写成 "实部±虚部i"
的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i

注意:需要提交的是一个很庞大的复数,不要填写任何多余内容。


解题思路:

显然这道题考察了大数类的运用,写完后运行发现myEclipes的Console窗口不能显示出运行结果,想到应该是结果的内容量超出了它的显示范围。因此这里需要把结果输出到文件内。

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");
    }
}

猜你喜欢

转载自blog.csdn.net/beilunc7/article/details/87006801
今日推荐