蓝桥杯——第几个幸运数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40205116/article/details/88538860

到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。


我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49


小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。


请你帮小明计算一下,59084709587505是第几个幸运数字。

题目分析,首先幸运数字都可以被3或5或7整除,所以直接在3,5,7的倍数里边找幸运数字。

import java.util.ArrayList;
import java.util.List;

public class Main{
    public static void main(String[] args) {
        List<Long> list = new ArrayList<Long>();
        list.add((long) 3);
        list.add((long) 5);
        list.add((long) 7);
        long san = 1;
        long wu = 1;
        long qi = 1;
        while(!list.get(list.size()-1).equals(new Long(59084709587505L))) {
            long sanbei = list.get((int)san)*3;
            long wubei = list.get((int)wu)*5;
            long qibei = list.get((int)qi)*7;
            long min = min(sanbei, wubei, qibei);
            if(min == sanbei)
                san++;
            if(min == wubei)
                wu++;
            if(qibei == min)
                qi++;
            list.add(min);
        }
        System.out.println(list.size()+1);
    }

    private static Long min(long sanbei, long wubei, long qibei) {
        Long t = sanbei < wubei? sanbei: wubei;
        return t < qibei ? t: qibei;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40205116/article/details/88538860