白準1037号(約数)

2382 ワード

質問する
正数AをNの真約数にするには,NはAの倍数であり,Aは1とNではない.任意の数Nのすべての真約数が与えられた場合、Nを求めるプログラムを作成してください.
入力
第1行はNの真約数の個数を与える.この数は50以下の自然数です.2行目はNの真約数を与える.10,000,000以下、2以上の自然数は、繰り返しません.
入力例242結果:863 4 2 12 6 8結果:24
この問題を所定の薬水とその薬水を持つ整数を求める問題として解く.最初は二重比較で解決すればいいと思っていたが、やはり間違いだった.だから私はゆっくりと例を見て考えています.
エラーコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
    public static void main(String arg[]) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int count = Integer.parseInt(reader.readLine());
        StringTokenizer stringTokenizer = new StringTokenizer(reader.readLine());
        int[] array = new int[count];
        for(int i = 0; i< array.length;i++){
            array[i] = Integer.parseInt(stringTokenizer.nextToken());
        }
        Arrays.sort(array);
        System.out.println(divisor(array));
    }
    public static int divisor(int[] array){
        int num = array[array.length-1] * 2;
        for(int j = 0; j<array.length;j++){
            while (true){
                if(num % array[j]==0){
                    break;
                }
                num++;
            }
        }
        return num;
    }
}
一例を見て、これらの薬水を並べ替えた後、最小値と最大値を乗算して、これらの薬水の値を得た.したがって,関数の実行を変更することで,結果は正しい.
コード#コード#
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
    public static void main(String arg[]) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int count = Integer.parseInt(reader.readLine());
        StringTokenizer stringTokenizer = new StringTokenizer(reader.readLine());
        int[] array = new int[count];
        for(int i = 0; i< array.length;i++){
            array[i] = Integer.parseInt(stringTokenizer.nextToken());
        }
        System.out.println(divisor(array));
    }
    public static int divisor(int[] array){
        Arrays.sort(array);
        int min = array[0];
        int max = array[array.length - 1];
        return min * max;
    }
}
3日間の決心ではないことを願っています.集中して...