0
点赞
收藏
分享

微信扫一扫

18年蓝桥杯Java省赛第三题:复数幂


目录

  • ​​🍋题目描述​​
  • ​​🍋思路​​
  • ​​🍋源代码​​
  • ​​🍋其他真题​​

🍋题目描述

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

答案写成 “实部±虚部i” 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i

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

🍋思路

看完题目就是暴力。
大数,就必须联想到BigInteger。我们必须熟悉BigInteger的用法。
定义BigInteger a和BigInteger b,每次循环就是不断更新BigInteger的过程。
还有由于这个数实在太大了,控制台输出不了,我们要学会输出到记事本里面,这个也是我们要学习的。

要做出这道题,以上元素缺一不可。

  • 答案很长。

18年的b组这么简单,属实有点舒服。

🍋源代码

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.math.BigInteger;

public class Main {
public static void main(String[] args) throws FileNotFoundException {
BigInteger two =BigInteger.valueOf(2);
BigInteger three =BigInteger.valueOf(3);

BigInteger a=BigInteger.valueOf(2);
BigInteger b=BigInteger.valueOf(3);
for(int i=0;i<123455;i++) {//边界条件,很重要
BigInteger aa=a.multiply(two).subtract(b.multiply(three));//a*2-(b*3)
BigInteger bb=a.multiply(three).add(b.multiply(two));//a*3+b*2
a=aa;
b=bb;
}
System.setOut(new PrintStream(new File("D:\\out.txt")));//定义路径
System.out.println(a+(b.compareTo(BigInteger.ZERO)<0 ? "-":"+")+b+"i");//必须要有这行,不然记事本不会输出
}
}



18年蓝桥杯Java省赛第三题:复数幂_蓝桥杯


举报

相关推荐

0 条评论