Copa Blue Bridge: ¿Cuál es el número de la suerte (notas) (respuesta)

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

  1. Si el número del visitante contiene solo factores: 3, 5, 7, entonces puede obtener un premio.
  2. 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;
    }
}


Supongo que te gusta

Origin blog.csdn.net/qq_47168235/article/details/108905236
Recomendado
Clasificación