首页 > 代码库 > 蓝桥杯 历届试题-核桃的数量

蓝桥杯 历届试题-核桃的数量

                        

                       历届试题-核桃的数量

  问题描述

小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

  1. 各组的核桃数量必须相同

  2. 各组内必须能平分核桃(当然是不能打碎的)

  3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)

输入格式
  输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)
输出格式
  输出一个正整数,表示每袋核桃的数量。
  样例输入1
       2 4 5
  样例输出1
       20
  样例输入2
       3 1 1
  样例输出2
       3
思考过程:
  1.要求三个小组都可以平分而且尽量少,则是要求 求最小的公倍数。
  2.两个数的最小公倍数是找是否有数能同时被n(n>=2)取余==0,
  如果可以则有公因数,两个数相乘后除以最大公因数。即求到a,b最大公因数
  3.接着则是将两个数的最大公因数与第三个数进行求最大公因数。即求到a,b,c的最大公因数
  
 1 import java.util.Scanner;
 2 public class Main {
 3 
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6         Scanner input = new Scanner(System.in);
 7         int a = input.nextInt();//输入需要的三个数 ---求公倍数
 8         int b = input.nextInt();
 9         int c = input.nextInt();
10         int k=0;//过度两个数的公倍数
11         int n=0;
12         for(int i=2;i<=Math.min(a, b);i++){//判断两个数之间的最小公倍数
13             if(b%i==0&&a%i==0) {
14                 k=a*b/i;
15             }
16             }
17         if(k==0){//过度a*b的数
18             k=a*b;
19         }
20         for(int j=2;j<=Math.min(k, c);j++) {
21             if(k%j==0&&c%j==0) {
22                 n=k*c/j;
23             }
24         }
25         if(n==0){
26             n=k*c;
27         }
28         System.out.println(n);
29     }
30 
31 }

 

  

蓝桥杯 历届试题-核桃的数量