第九届蓝桥杯试题3--复数幂

第九届蓝桥杯试题3–复数幂

题目:设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。
求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。

答案写成 “实部±虚部i” 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i
注意:需要提交的是一个很庞大的复数,不要填写任何多余内容。

首先,看到这道题,要求的是复数123456次幂,题中提示这个数字很大,所以要考虑用BigInteger,BigInteger的一些方法有:
multiply() 相乘
subtract() 相减
add() 相加
要进行数的正负比较时,可以用compareTo(),例如i.compareTo(j),若i大于j时,返回一个大于0的数,若i小于j时,返回-1。

import java.math.BigInteger;

public class Demo {
	public static void main(String[] args) {
	    BigInteger m=new BigInteger("2");
	    BigInteger n=new BigInteger("3");
	    BigInteger i=m,j=n;
		BigInteger x;
		BigInteger h=new BigInteger("0");
		for(int k=1;k<123456;k++) {
			x=m.multiply(i).subtract(n.multiply(j));  //x=m*i-n*j
			j=m.multiply(j).add(n.multiply(i));      //j=m*j+n*i
			i=x;
		}
		if(j.compareTo(h)!=-1)
			System.out.println(i+"+"+j+"i");
		else if(j.compareTo(h)==-1)
			System.out.println(i+""+j+"i");
	}
}

运行结果:

第九届蓝桥杯试题3--复数幂

可以复制控制台上的内容,然后粘贴到一个文本文档中,就能查看到结果了。
第九届蓝桥杯试题3--复数幂

上一篇:MySQL int定义说明


下一篇:java – 如何使用BigInteger类?