Java?PTA?計算3到7位?水仙花數(shù)實例
PTA計算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實現(xiàn)
春天是鮮花的季節(jié),水仙花就是其中最迷人的代表,數(shù)學上有個水仙花數(shù),他是這樣定義的:“水仙花數(shù)”是指一個三位數(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)輸入兩個整數(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) {// 最后一個不需要輸出空格 ? ? ? ? ? ? ? ? ? ? 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個位的數(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;// 返回數(shù)組 ? ? }? }
代碼還能優(yōu)化
比如可以用數(shù)組儲存0-9的三次冪,需要用到多少次冪的時候就用多少次冪,用數(shù)組需要循環(huán)判斷輸出,用hashmap直接映射比較好,減少三次冪運算。
這里博主就直接使用math.pow()這個方法求冪了。
Math.pow(a,b)方法的使用是 a為底數(shù),b為冪數(shù)。比如a的b次方。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring MVC攔截器_動力節(jié)點Java學院整理
Spring MVC的攔截器,是屬于HandlerMapping級別的,可以有多個HandlerMapping ,每個HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過本文學習吧2017-08-08在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明
這篇文章主要介紹了在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10流讀取導(dǎo)致StringBuilder.toString()亂碼的問題及解決
這篇文章主要介紹了流讀取導(dǎo)致StringBuilder.toString()亂碼的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11JAVA中string數(shù)據(jù)類型轉(zhuǎn)換詳解
在JAVA中string是final類,提供字符串不可以修改,string類型在項目中經(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ù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示2022-03-03