Java?PTA?計(jì)算3到7位?水仙花數(shù)實(shí)例
PTA計(jì)算3到7位 水仙花數(shù)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int min = (int) Math.pow(10, n - 1); int max = (int) Math.pow(10, n); int[] pow = new int[10]; pow[1] = 1; for (int i = 2; i < pow.length; i++) { pow[i] = (int) Math.pow(i, n); } for (int i = min; i < max; i++) { int sum = 0; for (int j = 10; j < max; j *= 10) { sum += pow[i / j % 10]; } sum += pow[i % 10]; if (sum == i) { System.out.println(i); } } } }
水仙花數(shù)的Java實(shí)現(xiàn)
春天是鮮花的季節(jié),水仙花就是其中最迷人的代表,數(shù)學(xué)上有個(gè)水仙花數(shù),他是這樣定義的:“水仙花數(shù)”是指一個(gè)三位數(shù),它的各位數(shù)字的立方和等于其本身,比如:153=1^3+5^3+3^3。
要求輸出所有在m和n范圍內(nèi)的水仙花數(shù)
import java.util.ArrayList; import java.util.Scanner;? public class Main { ? ? public static void main(String[] args) { ? ? ? ? Scanner input = new Scanner(System.in); ? ? ? ? int start = input.nextInt(); ? ? ? ? int end = input.nextInt();// 系統(tǒng)輸入兩個(gè)整數(shù) ? ? ? ? ArrayList<Integer> out = flower(start, end);// 調(diào)用方法 ? ? ? ? if (out.isEmpty()) {// 判斷是否為空,按格式輸出no。 ? ? ? ? ? ? System.out.println("no"); ? ? ? ? } else { ? ? ? ? ? ? for (int i = 0; i < out.size(); i++) {// 按格式輸出 ? ? ? ? ? ? ? ? if (i != out.size() - 1) {// 最后一個(gè)不需要輸出空格 ? ? ? ? ? ? ? ? ? ? System.out.print(out.get(i) + " "); ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? System.out.print(out.get(i)); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }? ? ? } ? ? ? public static ArrayList<Integer> flower(int startNumber, int endNumebr) {? ? ? ? ? ArrayList<Integer> flowerNumber = new ArrayList<Integer>(); ? ? ? ? int j = 0; ? ? ? ? for (int i = startNumber; i < endNumebr; i++) { ? ? ? ? ? ? /* ? ? ? ? ? ? ?* 若滿足條件放入數(shù)組 條件是分別取出3個(gè)位的數(shù)的3次方相加==原數(shù) ? ? ? ? ? ? ?*/ ? ? ? ? ? ? if ((i == Math.pow(Math.floor(i / 100), 3) + Math.pow(Math.floor(i % 100 / 10), 3) ? ? ? ? ? ? ? ? ? ? + Math.pow(i % 100 % 10, 3)) && i >= startNumber && i <= endNumebr) {? ? ? ? ? ? ? ? ? flowerNumber.add(i);? ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return flowerNumber;// 返回?cái)?shù)組 ? ? }? }
代碼還能優(yōu)化
比如可以用數(shù)組儲(chǔ)存0-9的三次冪,需要用到多少次冪的時(shí)候就用多少次冪,用數(shù)組需要循環(huán)判斷輸出,用hashmap直接映射比較好,減少三次冪運(yùn)算。
這里博主就直接使用math.pow()這個(gè)方法求冪了。
Math.pow(a,b)方法的使用是 a為底數(shù),b為冪數(shù)。比如a的b次方。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring MVC攔截器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC的攔截器,是屬于HandlerMapping級(jí)別的,可以有多個(gè)HandlerMapping ,每個(gè)HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過(guò)本文學(xué)習(xí)吧2017-08-08在MyBatis中使用 # 和 $ 書(shū)寫(xiě)占位符的區(qū)別說(shuō)明
這篇文章主要介紹了在MyBatis中使用 # 和 $ 書(shū)寫(xiě)占位符的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10流讀取導(dǎo)致StringBuilder.toString()亂碼的問(wèn)題及解決
這篇文章主要介紹了流讀取導(dǎo)致StringBuilder.toString()亂碼的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11JAVA中string數(shù)據(jù)類型轉(zhuǎn)換詳解
在JAVA中string是final類,提供字符串不可以修改,string類型在項(xiàng)目中經(jīng)常使用,下面給大家介紹了string七種數(shù)據(jù)類型轉(zhuǎn)換,需要的朋友可以參考下2015-07-07Java中print、printf、println的區(qū)別
這篇文章主要介紹了Java中print、printf、println的區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-03-03Java?精煉解讀數(shù)據(jù)結(jié)構(gòu)的順序表如何操作
程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個(gè)數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲(chǔ)區(qū)里,元素間的順序關(guān)系由它們的存儲(chǔ)順序自然表示2022-03-03