Hola, soy el pequeño simio gris, ¡un programador que puede escribir errores!
Bienvenidos a todos para que presten atención a mi columna " Daily Blue Bridge ". La función principal de esta columna es compartir con ustedes las preguntas reales de las competiciones provinciales y finales de la Blue Bridge Cup en los últimos años, analizar las ideas de algoritmos, estructuras de datos y otros contenido que existe en él, y le ayudará a aprender a obtener más conocimientos y tecnología.
Título: Número de nueces
Xiao Zhang es gerente de proyectos de software. Dirige tres equipos de desarrollo con horarios ajustados. Todos están trabajando horas extras hoy. Para levantar la moral, Xiao Zhang tiene la intención de enviar una bolsa de nueces a cada equipo (según los rumores, puede ayudar al cerebro ). Su solicitud Sí:
La cantidad de nueces en cada grupo debe ser la misma
Las nueces deben dividirse por igual en cada grupo (por supuesto, no se pueden romper)
Trate de proporcionar la cantidad más pequeña que satisfaga las condiciones de 1, 2 (ahorrando y haciendo revolución)
El programa lee desde la entrada estándar:
a B C
a, b, c son todos números enteros positivos, lo que indica el número de personas que trabajan horas extra en cada grupo, separados por espacios (a, b, c <30)
Salida del programa:
Un número entero positivo, que indica la cantidad de nueces por bolsa.
P.ej:
Entrada del usuario:
2 4 5
Salida del programa:
20
Otro ejemplo:
Entrada del usuario:
3 1 1
Entrada de programa:
3
Acuerdo de recursos:
Consumo máximo de memoria (incluidas las máquinas virtuales) <64 M
Consumo de CPU <1000ms
Ingrese estrictamente de acuerdo con los requisitos y no imprima contenido redundante superfluo como: "Ingrese ..."
Todos los códigos se colocan en el mismo archivo fuente, después de que pasa la prueba, copie y envíe el código fuente
Nota: la función principal debe devolver 0
Nota: Utilice únicamente los estándares ANSI C / ANSI C ++, no llame a funciones especiales que dependan del entorno de compilación o del sistema operativo
Nota: Todas las funciones dependientes deben estar claramente en el archivo de origen, #include <xxx> no se puede configurar a través del proyecto para ignorar los archivos de encabezado comunes
Al enviar, preste atención a seleccionar el tipo de compilador deseado
Ideas de resolución de problemas:
De acuerdo con los requisitos de la raíz de la pregunta, podemos inferir que en realidad se trata de encontrar el mínimo común múltiplo de tres números, por lo que podemos resolver el problema según el método de resolver el mínimo común múltiplo.
Aquí he enumerado dos métodos de resolución, uno es el método más simple para resolver directamente el mínimo común múltiplo de tres números, y el segundo es usar el mínimo común múltiplo de dos números para resolver el problema.
Al mismo tiempo, aquí hay un resumen del método para resolver el mínimo común múltiplo de dos números:
Mínimo común múltiplo de dos números = producto de dos números / máximo común divisor de dos números
Encontrar el máximo común divisor de dos números se puede resolver mediante el método de división:
aquí hay una lista de soluciones de Java:/ **
* Encuentra el mínimo común múltiplo de dos números
* @param xy los parámetros pasados en
* * /
public static int minMultiple ( int a , int b ) {
return a * b / maxApp ( a , b );
}
/ * *
* Encuentra el máximo común divisor de dos números
* @param x, y Los parámetros pasados en
* * /
public static int maxApp ( int a , int b ) {
if ( a < b) {
int temp = a ;
a = b ;
b = temp ;
}
int r = a % b ;
mientras ( r ! = 0) {
a = b ;
b = r ;
r = a % b ;
}
return b ;
}
Código fuente de respuesta :
Solución uno (solución directa):
public class Year2013_t7 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); for (int i = 1; i <= a*b*c; i++) { if (i%a==0&&i%b==0&&i%c==0) { System.out.println(i); break; } } } }
Solución dos (buscando el mínimo común múltiplo):
package 一三年省赛真题; import java.util.Scanner; public class Year2013_t7 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); System.out.println(minMultiple(a, minMultiple(b, c))); } /** * 求两个数的最小公倍数 * @param x y 传入的参数 * */ public static int minMultiple(int a,int b) { return a*b/maxApp(a, b); } /** * 求两个数的最大公约数 * @param x, y 传入的参数 * */ public static int maxApp(int a, int b) { if (a<b) { int temp = a; a = b; b = temp; } int r = a%b; while (r!=0) { a = b; b = r; r = a%b; } return b; } }
Salida de muestra: