[Daily Blue Bridge] 7. La verdadera cuestión del "número de nueces" en el grupo de Java en el primer y tres años de las competencias provinciales

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í:

  1. La cantidad de nueces en cada grupo debe ser la misma

  2. Las nueces deben dividirse por igual en cada grupo (por supuesto, no se pueden romper)

  3. 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:

 

Hay deficiencias o mejoras, ¡y espero que mis amigos dejen un mensaje y aprendan juntos!

¡Los amigos interesados ​​pueden seguir la columna!

¡Little Grey Ape os acompaña para progresar juntos!

Finalmente, estoy participando en la selección del Blog Star 2020, ¡ayúdame a votar por él!

Enlace de voto: https://bss.csdn.net/m/topic/blog_star2020/detail?username=weixin_44985880

Supongo que te gusta

Origin blog.csdn.net/weixin_44985880/article/details/112694474
Recomendado
Clasificación