1. 程式人生 > >習題6 韓信點兵

習題6 韓信點兵

oid 利用 .cn code imp == 參數 clas pub

題目如下

相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c ,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出總人數的最小值。已知總人數不小於10,不超過100 。

樣例輸入

2 1 6

樣例輸出

41

首先此處為實現在控制器輸入參數進行輸出,引用scanner

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        
    }
}

將scanner實例化,

import java.util.Scanner;

public class Hanxindianbing {

    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        
    }
}

如題,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。

也就是說總人數%3=a 且 總人數%5=b 且 總人數%7=c;

定義總人數為sum (int sum) 且總人數不小於10人,不超過100人。

接下來利用一層for循環來判斷

import java.util.Scanner;

public class Hanxindianbing {

    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 sum=10;sum<=100;sum++){ if(sum%3==a && sum%5==b && sum%7==c){ } } } }

下面輸出,題目中還提到,輸出總人數的最小值,那麽我的方法是輸出一次之後就跳出循環。

import java.util.Scanner;

public class Hanxindianbing {

    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 sum=10;sum<=100;sum++){
            if(sum%3==a && sum%5==b && sum%7==c){
                System.out.println(sum);break;
            }
        }
    }
}

在控制臺輸入2、1、6

結果

技術分享

習題6 韓信點兵