网站建设吧如何免费制作自己的网站
题目:小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:
-
各组的核桃数量必须相同
-
各组内必须能平分核桃(当然是不能打碎的)
-
尽量提供满足 1,2 条件的最小数量(节约闹革命嘛)
输入描述
输入一行 a,b,ca,b,c,都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)(a,b,c<30)。
输出描述
输出一个正整数,表示每袋核桃的数量。
输入输出样例
示例
输入
2 4 5
输出
20
解题思路+代码:
代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {/**思路:1.读取3个组加班的人数2.创建核桃分发方法(核桃数 % 组人数 == 0)*/Scanner scan = new Scanner(System.in);int[] person = new int[3];for(int i = 0;i< person.length;i++){person[i] = scan.nextInt();//读取3个组加班的人数存放进数组}//更新结果int result = Integer.MAX_VALUE;for(int i = 1;i <= 10000; i++){boolean flag = true;//判断核桃是否能够正好分发给小组成员for(int j = 0; j < person.length;j++){if(i % person[j] != 0){flag = false;break;}}//当flag为true时,将i(最小公约数)赋值给resultif(flag){result = i;break;}}System.out.println(result);scan.close();}
}
总结:解答这道题需要求核桃的数量,很容易想到模运算,用核桃的数量分别%三组人数==0即可,但是这样的数存在很多个,但题目要求的尽量提供满足 1,2 条件的最小数量(节约闹革命嘛)正暗示了需要求最小公约数,因此求解最小公约数即是正确求解。那怎么在代码中体现最小公约数?我个人的解法是使用数组来存储三组人数,用for循环+if条件判断找到最小的遍历值,再赋值给结果并输出。这里也可以不用数组换成暴力匹配,直接获取三组人数,用for循环+if条件判断(3个组分别判断)后得到最小遍历值也是相应的结果。