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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第八届蓝桥杯决赛 平方十位数(枚举)

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第八届蓝桥杯决赛 平方十位数(枚举) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標題:平方十位數
由0~9這10個數字不重復、不遺漏,可以組成很多10位數字。
這其中也有很多恰好是平方數(是某個數的平方)。

比如:1026753849,就是其中最小的一個平方數。

請你找出其中最大的一個平方數是多少?

注意:你需要提交的是一個10位數字,不要填寫任何多余內容。

答案:9814072356

分析

  • 我們很容易會想到求出9-0這10個數字的全排列,然后最先找到的平方數就是答案這種做法。顯然這種方法是正確的,但是如果寫全排列的代碼不熟練或者不會處理精度問題就很容易出錯(沒錯就是我 )。
  • 我們可以嘗試另一種做法,從1026753849\sqrt{1026753849}1026753849?開始枚舉,求出的小于11億且包含0-9這個數字的平方數,最后一個輸出的就是我們要求的結果。

代碼如下

import java.util.Arrays;public class Main {static boolean mark[]=new boolean[15];static boolean check(long n) {//if n includes 0 to 9Arrays.fill(mark, false);while(n!=0) {if(mark[(int)(n%10)]) return false;else mark[(int)(n%10)]=true;n/=10;}return true;}public static void main(String[] args) { // System.out.println(Math.sqrt(1026753849));long sum=0;for(long i=32043;sum<=9999999999L;i++) {sum=i*i;if(check(sum))System.out.println(sum);}} } //the last output data is the answer

總結

以上是生活随笔為你收集整理的第八届蓝桥杯决赛 平方十位数(枚举)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。