ブルーブリッジカップ:ラッキーナンバー(メモ)(回答)

トピック

 タイトル:ラッキーナンバーで
  惑星xに​​旅行した観光客の数は、観光客数として整数を与えられました。Xスターの王様には癖があり、3、5、7の数字しか好きではありません。国王は、訪問者の数に3、5、7の要素しか含まれていない場合、賞品を獲得できると規定しました。最初の10個のラッキーナンバーを見てみましょう:3 5 7 9 15 21 25 273545。したがって、11番目のラッキーナンバーは49です。シャオミンはラッキーナンバー5904709587505を受け取りました。賞を受け取ったとき、彼は正確に言うように求められました。これは最初のラッキーナンバーです。そうでない場合、賞品を受け取ることはできません。Xiaomingの計算を手伝ってください。5904709587505がラッキーナンバーです。提出する必要があるのは整数です。余分な内容を入力しないでください。

回答

  1905年

予防

  1. 訪問者の数に3、5、7の要素のみが含まれている場合、訪問者は賞品を受け取ることができます
  2. ラッキーナンバーが大きすぎて、intの範囲を超えているため、長く使用する必要があります

コード

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