计算机思维综合训练-java-14

蹲街弑〆低调 提交于 2020-02-15 11:23:01

java List

题目

题面描述:
有一个整数序列,序列中每个元素的质因数只有2、3、5,该序列的前几个元素为1、2、3、4、5、6、8、9、10…。按惯例,1也作为序列中的元素,且是序列中的第一个元素。现在感兴趣的是,给定一个位置n(1≤n≤10000)),该序列中第n个元素是多少?

输入:
输入有若干行,每行为一个整数n,为查询的元素位置。

输出:
对每行输入,在单独的行中输出序列中对应位置的元素。
示例输入:
1
2
3
7

示例输出:
1
2
3
8

代码

import java.util.Scanner;
public class Main{
    public static long min(long a, long b, long c) {
        long tem = (a<b? a : b);
        return (tem< c ? tem : c);
    }
    public static long Find(int n) {
        long num[] = new long[n];
        num[0] = 1;
        int index2 = 0;
        int index3 = 0;
        int index5 = 0;
        int index = 1;
        while (index < n) {
            long val = min(num[index2]*2, num[index3]*3, num[index5]*5);
            if (val == num[index2]*2) ++index2;
            if (val == num[index3]*3) ++index3;
            if (val == num[index5]*5) ++index5;
            num[index++] = val;
        }
        return num[n - 1];
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            System.out.println(Find(scan.nextInt()));
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!