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