본문 바로가기
코딩테스트/백준

JAVA 백준 21412번 Дробь

by 광고(주) 2022. 6. 18.
반응형

문제

Коля учится в третьем классе, сейчас они проходят простые дроби с натуральными числителем и знаменателем. Вчера на уроке Коля узнал, что дробь называется правильной, если ее числитель меньше знаменателя, и несократимой, если нет равной ей дроби с меньшими натуральными числителем и знаменателем.
Коля очень любит математику, поэтому дома он долго экспериментировал, придумывая и решая разные задачки с правильными несократимыми дробями. Одну из этих задач Коля предлагает решить вам с помощью компьютера.
Найдите наибольшую правильную несократимую дробь, у которой сумма числителя и знаменателя равна n.

입력

Во входном файле записано одно целое число n (3<= n<= 1000).

10
23

출력

Выведите в выходной файл числитель и знаменатель искомой дроби.

3 7
11 12

알고리즘 분류

브루트포스 알고리즘(bruteforcing), 유클리드 호제법(euclidean), 수학(math), 정수론(number_theory)

힌트

분자가 분모보다 작은수를 분수라 한다
정수 n이 주어였을때 n (3<= n<= 1000)
가장 큰 분수를 구한다

소스코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = n / 2 + 1; i < n; i++) {
            int gcd = GCD(i, n - i);
            if (gcd == 1) {
                System.out.println(n - i + " " + i);
                break;
            }
        }
    }

    // greatest common divisor
    static int GCD(int a, int b) {
        if (b == 0) return a;
        return GCD(b, a % b);
    }

    // least common multiple (a*b/GCD(a,b)) oerverflow
    static int LCM(int a, int b) {
        return (a * b) / GCD(a, b);
    }
}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

JAVA 백준 2231번 분해합  (0) 2022.06.20
JAVA 백준 23276번 Locust Locus  (0) 2022.06.19
JAVA 백준 4890번 Tiles of Tetris, NOT!  (0) 2022.06.18
JAVA 백준 9884번 Euclid  (0) 2022.06.18
JAVA 백준 1934번 최소공배수  (0) 2022.06.18

댓글