版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}