Java PTA 计算3到7位 水仙花数实例

目录
  • PTA计算3到7位水仙花数
  • 水仙花数的Java实现
    • 要求输出所有在m和n范围内的水仙花数
    • 代码还能优化

PTA计算3到7位 水仙花数

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);
            }
        }
    }
}

水仙花数的Java实现

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。

要求输出所有在m和n范围内的水仙花数

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();// 系统输入两个整数
        ArrayList<Integer> out = flower(start, end);// 调用方法
        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++) {
            /*
             * 若满足条件放入数组 条件是分别取出3个位的数的3次方相加==原数
             */
            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;// 返回数组
    } 
}

代码还能优化

比如可以用数组储存0-9的三次幂,需要用到多少次幂的时候就用多少次幂,用数组需要循环判断输出,用hashmap直接映射比较好,减少三次幂运算。

这里博主就直接使用math.pow()这个方法求幂了。

Math.pow(a,b)方法的使用是 a为底数,b为幂数。比如a的b次方。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java实现水仙花数的计算

    看到标题java实现水仙花数,首先先要知道什么是水仙花数,具体了解一下 所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 列如153=1*1*1+5*5*5+3*3*3  那么153就是水仙花数,首先是分析需要的功能,首先他是一个3位数. 那值一定在100-1000之间,必定要用到循环.可用for循环,while循环,do while 循环,其次是它需要满足条件 "其各位数字立方和等于该数",那么我们必须把他的各位的数字取出.我们在循环里做判断,当数满足条件

  • Java和C语言分别实现水仙花数及拓展代码

    目录 前言 一.水仙花数 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 二.拓展 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 前言 求出0-999之间的所有"水仙花数"并输出.("水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个"水仙花数".) 一.水仙花数 因为水仙花数是三位数,所以我们把范围定为1

  • java计算任意位水仙花数示例(回文数)

    可计算任意位水仙花数 复制代码 代码如下: public static void main(String[] args) {  int max = 10;  for (int len = 1; len <= max; len++) {   System.out.println(getNarc(len, ""));  } } static StringBuffer strb = new StringBuffer(); static String getNarc(int len, S

  • Java打印出所有的水仙花数的实现代码

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位. 程序设计: public class exp2{ public static void main(String args[]){ int i=0; math mymath = new

  • Java三种求水仙花数的方法

    水仙花数:水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:370=33+73+00:371=33+73+13,370.371就是一个水仙花数 注意:要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位 普通for循环: public class Daffodil { public static void main(String[] args) { int count = 0; //定义水仙花数的个数 for(int i=100;i<=10000;i++){ //

  • java计算自幂数和水仙花数

    (例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数)n为1时,自幂数称为独身数.n为2时,没有自幂数.n为3时,自幂数称为水仙花数.n为4时,自幂数称为玫瑰花数.n为5时,自幂数称为五角星数.n为6时,自幂数称为六合数.n为7时,自幂数称为北斗七星数.n为8时,自幂数称为八仙数.n为9时,自幂数称为九九重阳数.n为10时,自幂数称为十全十美数. 复制代码 代码如下: /* * 自幂数 * 自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等

  • Java PTA 计算3到7位 水仙花数实例

    目录 PTA计算3到7位水仙花数 水仙花数的Java实现 要求输出所有在m和n范围内的水仙花数 代码还能优化 PTA计算3到7位 水仙花数 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

  • Java求10到100000之间的水仙花数算法示例

    本文实例讲述了Java求10到100000之间的水仙花数算法.分享给大家供大家参考,具体如下: 水仙花数: 概念:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 算法思路分析:这个算法我们分两个步骤来进行:第一:我们做一个求一个数的位数的函数:第二:我们通过调用此函数来进行10到100000之间素数的计算! 下面给出具体的代码(仅供参考): package javastudy; public class

  • python实现水仙花数实例讲解

     1.什么是水仙花数? 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153) 详见:水仙花数-百度百科 2.实现: def number_daffodils(m=100, n=1000): if type(

  • python打印n位数“水仙花数”(实例代码)

    注:所谓n位数"水仙花数"是指一个n数,其各位数字n次方和等于该数本身.如三位数"水仙花数"是指一个三位数,其各位数3次方和等于该数本身. 一.3位数"水仙花数"如下:  list2=[] for i in range(100,1000): str1=str(i) sum1=0 for j in str1: num=int(j) sum1+=num**3 if i==sum1: list2.append(i) print(list2) 运行结果:

  • Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例

    本文实例讲述了Java根据身份证号计算年龄,15位身份证号码转18位.分享给大家供大家参考,具体如下: 第一代身份证:15位身份证号码的意义 15位身份证号码各位的含义: 1-2位省.自治区.直辖市代码: 3-4位地级市.盟.自治州代码: 5-6位县.县级市.区代码: 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别: 13-15位为顺序号,其中15位男为单数,女为双数: 与18位身份证号的第二个区别:没有最后一位的校验码. 举例: 130503 670

  • java计算自然数中的水仙花数的方法分享

    核心代码 /** * m-n自然数中的水仙花数 * @param n * @param m */ static void getNums(int n,int m){ for(int i=m;i<=n;i++){ int ge,shi,bai; double shui; bai=i/100; shi=i%100/10; ge=i%10; shui=Math.pow(bai, 3)+Math.pow(shi, 3)+Math.pow(ge, 3); if(i==shui) System.out.pr

  • Java简单计算圆周率完整示例

    本文实例讲述了Java简单计算圆周率.分享给大家供大家参考,具体如下: 这两天在网上看到一个题,已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + -) 计算,计算出小数点后五位(计算圆周率).于是手动写了一个小demo,欢迎大家留言,进行交流与指教. 完整示例代码如下: package math; public class PiTest { private static int bytelimit = 5;// 小数后限制位数 /** * @author zhao33699

随机推荐