蓝桥杯:第几个幸运数 (注意事项)(答案)

题目

 标题:第几个幸运数
  到x星球旅行的游客都被发给一个整数,作为游客编号。 x星的国王有个怪癖,他只喜欢数字3,5和7。 国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。 我们来看前10个幸运数字是: 3 5 7 9 15 21 25 27 35 45 因而第11个幸运数字是:49 小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。 请你帮小明计算一下,59084709587505是第几个幸运数字。 需要提交的是一个整数,请不要填写任何多余内容。

答案

  1905

注意事项

  1. 游客的编号如果只含有因子:3,5,7,才可以获得一份奖品
  2. 幸运数过大,超出了int的范围,需要用long

代码

import java.util.ArrayList;

public class Main {
    
     //蓝桥杯要求class命名为Main,且无package
    public static void main(String []args){
    
    
        long luck=59084709587505L;//幸运数,末尾是字母L而不是数字1,数字超出了int的范围,故而用long
        long san=0,wu=0,qi=0;
        ArrayList<Long> list = new ArrayList<Long>();//将3,5,7存入list集合
        list.add(3L); //L代表long类型
        list.add(5L);
        list.add(7L);
        while(!(list.get(list.size()-1)==(luck))){
    
     //如果不和幸运数相等就执行
            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(min==qibei){
    
    
                qi++;
            }
            list.add(min);
        }
        System.out.println(list.size());
    }

    public static long min(long a,long b,long c){
    
     //返回最小值
        long m = a>b?b:a;
        return m>c?c:m;
    }
}


猜你喜欢

转载自blog.csdn.net/qq_47168235/article/details/108905236
今日推荐