日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

第九届蓝桥杯 Java B组 第三题 复数幂 (详解)

發(fā)布時間:2024/9/30 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第九届蓝桥杯 Java B组 第三题 复数幂 (详解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

藍(lán)橋杯 加油 (? ?_?)?

標(biāo)題:復(fù)數(shù)冪


設(shè)i為虛數(shù)單位。對于任意正整數(shù)n,(2+3i)^n 的實部和虛部都是整數(shù)。
求 (2+3i)^123456 等于多少? 即(2+3i)的123456次冪,這個數(shù)字很大,要求精確表示。


答案寫成 “實部±虛部i” 的形式,實部和虛部都是整數(shù)(不能用科學(xué)計數(shù)法表示),中間任何地方都不加空格,實部為正時前面不加正號。(2+3i)^2 寫成: -5+12i,
(2+3i)^5 的寫成: 122-597i


注意:需要提交的是一個很龐大的復(fù)數(shù),不要填寫任何多余內(nèi)容。

package JB第09屆省賽;import java.io.*; //import java.io.FileOutputStream; //import java.io.PrintStream; import java.math.BigInteger;public class A03_復(fù)數(shù)冪2 {public static void main(String[] args) {try {//改變輸出流,輸出到work.txt文件PrintStream ps = new PrintStream(new FileOutputStream("G:\\work.txt"));System.setOut(ps); //文件輸出 用System.out.println()即可將內(nèi)容輸出到文件中BigInteger a = new BigInteger("2");BigInteger b = new BigInteger("3");BigInteger x = new BigInteger("2");BigInteger y = new BigInteger("3");for(int i = 0; i < 123455; i++) {BigInteger t = x;x = x.multiply(a).subtract(y.multiply(b));y = t.multiply(b).add(y.multiply(a));}System.out.println(x + "" + ((y.compareTo(BigInteger.ZERO) > 0)? "+" : "") + y + "i");} catch (Exception e) { //拋出異常e.printStackTrace();}}}
  • 條件運算符 : (b > 0) ? “+” : “”
  • 2次冪: 循環(huán)一次 ???;??? 23456次冪: 123455
  • 每一次累乘,x與y的值 都要更新(需要臨時值t, 保留上一次循環(huán)的x值)。
    BigInteger t = x; //保留上一次循環(huán)的x值??? ----- ???給y用
    x = xa - yb;
    y = tb + ya;
  • 驗證算法正確性:
    (2+3i)^2:-5+12i
    (2+3i)^3:-46+9i
    (2+3i)^4:-119-120i
    (2+3i)^5:122-597i
    (2+3i)^6:2035-828i
  • 運行上面的程序,在控制臺看不到任何輸出—標(biāo)準(zhǔn)輸出不再輸出到屏幕,
    而是輸出到了相應(yīng)的文件中。
  • System類里提供了如下三個重定向標(biāo)準(zhǔn)輸入/輸出的方法:
    1、static void setErr(PrintStream err) : 重定向“標(biāo)準(zhǔn)”錯誤輸出流
    2、static void setIn(InputStream in) : 重定向“標(biāo)準(zhǔn)”輸入流
    3、static void setOut(PrintStream out) : 重定向“標(biāo)準(zhǔn)”輸出流
  • (1)程序有時需要處理大整數(shù),java.math.BigInteger提供任意精度的整數(shù)運算:
    (2)BigInteger類的常用方法:
    ??????????加法:public BigInteger add(BigInteger val)
    ??????????減法:public BigInteger subtract(BigInteger val)
    ??????????乘法:public BigInteger multiply(BigInteger val)
    ??????????除法:public BigInteger devide(BigInteger val)
    ??????????取余:public BigInteger remainder(BigInteger val)
    ??????????比較:public int compareTo(BigInteger val) 返回比較結(jié)果(1、-1、0)
  • 錯誤解法示例:
  • 代碼運行截圖1:
  • 代碼運行截圖2:
  • 將 核心代碼 放入 try{}代碼塊 中,運行效果 與 上圖 一致:

Java PrintStream 示例 :

package JB第09屆省賽;import java.io.FileOutputStream; import java.io.PrintStream;public class A03_PrintStream { // Redirectoutpublic static void main(String[] args) {try {//一次性創(chuàng)建PrintStream輸出流PrintStream ps = new PrintStream(new FileOutputStream("G:\\a.txt"));{//將標(biāo)準(zhǔn)輸出重定向到ps輸出流System.setOut(ps);//向標(biāo)準(zhǔn)輸出輸出一個字符串System.out.println("普通字符串");//向標(biāo)準(zhǔn)輸出輸出一個對象System.out.println(new A03_PrintStream()); }} catch (Exception e) {e.printStackTrace();}}}
  • Java PrintStream 示例 ----- 程序運行截圖1:
  • Java PrintStream 示例 ----- 程序運行截圖2:
package provincialGames_09_2018;import java.io.File; import java.io.PrintStream; import java.math.BigInteger;public class A03_復(fù)數(shù)冪3 {public static void main(String[] args) throws Exception {BigInteger two = BigInteger.valueOf(2);BigInteger three = BigInteger.valueOf(3);BigInteger a = BigInteger.valueOf(2);BigInteger b = BigInteger.valueOf(3);BigInteger aa = null;BigInteger bb = null;for (int i = 0; i < 123455; i++) {aa = a.multiply(two).subtract(b.multiply(three));// a*2-(b*3)bb = a.multiply(three).add(b.multiply(two));a = aa;b = bb;}System.setOut(new PrintStream(new File("D:\\out.txt")));System.out.println(aa + (bb.compareTo(BigInteger.ZERO) > 0 ? "-" : "+") + bb + "i");}}
參考 BLOG:
  • https://blog.csdn.net/yinxiaobao97/article/details/79929549
  • https://blog.csdn.net/weixin_40857816/article/details/78396918
  • 客官,點個贊再走啊,謝謝您嘞~

    總結(jié)

    以上是生活随笔為你收集整理的第九届蓝桥杯 Java B组 第三题 复数幂 (详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。