問題描述 小張是軟件項目經理,他帶領3個開發組。工期緊,今天都在加班呢。為鼓舞士氣,小張打算給每個組發一袋核桃(據傳言能補腦)。他的要求是:
各組的核桃數量必須相同
各組內必須能平分核桃(當然是不能打碎的)
盡量提供滿足1,2條件的最小數量(節約鬧革命嘛)
輸入格式 輸入包含三個正整數a, b, c,表示每個組正在加班的人數,用空格分開(a,b,c<30) 輸出格式 輸出一個正整數,表示每袋核桃的數量。 樣例輸入1 2 4 5 樣例輸出1 20 樣例輸入2 3 1 1 樣例輸出2 3 (解題思路:) 方法一:先求中三者中最大的數,然后成倍數增加,再分別和每個數取余,若都為0,此數即為最小公倍數
package lanqiaobei;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int a = scan.nextInt(); int b = scan.nextInt(); int c = scan.nextInt(); int max = a; if(b>max){ max = b; } if(c>max){ max = c; } int k=1; for(;k<=b*c;k++){ if(k*max%a==0 && k*max%b==0 && k*max%c==0){ System.out.PRintln(max*k); break; } } }}方法二: /**
轉化為最小公倍數 *最小公倍數=兩整數的乘積÷最大公約數 *先求出兩者的最小公倍數,然后再與第三個數求公倍數 */ import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner input = new Scanner(System.in);int a,b,c;a=input.nextInt();b=input.nextInt();c=input.nextInt(); System.out.println(publicMin(publicMin(a,b),c));}
private static int publicMin(int a, int b) { int c,m=a,n=b; while(b!=0){ c=a%b; a=b; b=c; } return m*n/a; } }
新聞熱點
疑難解答