算法系列之第九届蓝桥杯Java B组第三题复数幂

复数幂

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

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

思路:就是用暴力法解决,只是看到这个“很庞大的复数”我真的很慌,到底多大才算很庞大呢,百度了一下有的大佬贴出了10kb的数据,

真的是好庞大,但是小编算出来的也就是个19位数,不知道算不算庞大~

代码实现:

package 第九届蓝桥杯;
/**
* 标题:复数幂
设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。
求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。
答案写成 "实部±虚部i" 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,
(2+3i)^5 的写成: 122-597i
注意:需要提交的是一个很庞大的复数,不要填写任何多余内容
* @author 小萝卜头
*
*/
public class 第三题复数幂 {
public static void main(String[] args) {
long a=2,fir=2;
long b=3,sed=3;
long c=0,thi=0;
for(int i=2;i<=123456;i++){
thi=-(b*sed);
//System.out.print(thi+" ");
sed=a*sed+b*fir;
//System.out.print(sed+" ");
fir=a*fir+thi;
//System.out.println(fir+" ");
}
if(sed>=0)
System.out.println(fir+"+"+sed+"i");
else{
System.out.println(fir+""+sed+"i");
}
}

}
答案是:4043220979119144065-7374402350132176768i

小伙伴们可以通过与手算的数进行验证,小编验证1~7的均正确,所以认为代码是正确的。

i<=2时:-5+12i

i<=3时:-46+9i

i<=4时:-119-120i

i<=5时:122-597i

i<=6时:2035-828i

i<=7时:6554+4449i

如果这个题目有不懂的,可以评论去区见哦~等着你哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪潮之巅的小萝卜头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值