tema
Título: El número
de turistas que viajaron al planeta x con el número de la suerte recibió un número entero como número de turista. El rey de la estrella X tiene una peculiaridad, solo le gustan los números 3, 5 y 7. El rey estipuló que si el número de un visitante solo contiene factores: 3, 5, 7, pueden obtener un premio. Echemos un vistazo a los primeros 10 números de la suerte: 3 5 7 9 15 21 25 27 35 45. Por lo tanto, el undécimo número de la suerte es: 49. Xiao Ming recibió un número de la suerte 59904709587505. Cuando fue a recibir el premio, se le pidió que dijera con precisión Este es el primer número de la suerte, de lo contrario no recibirás el premio. Por favor, ayude a Xiaoming a calcular, 5904709587505 es el número de la suerte. Lo que se debe enviar es un número entero, no ingrese ningún contenido adicional.
responder
1905
Precauciones
- Si el número del visitante contiene solo factores: 3, 5, 7, entonces puede obtener un premio.
- El número de la suerte es demasiado grande, más allá del alcance de int, necesita usar long
Código
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;
}
}