๊ธฐ๋ก๋ฐฉ

BOJ_11689 : GCD(n, k) = 1 ๋ณธ๋ฌธ

CodingTest/Java

BOJ_11689 : GCD(n, k) = 1

Soom_1n 2024. 2. 21. 12:48

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

11689๋ฒˆ: GCD(n, k) = 1

์ž์—ฐ์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, GCD(n, k) = 1์„ ๋งŒ์กฑํ•˜๋Š” ์ž์—ฐ์ˆ˜ 1 ≤ k ≤ n ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 1๋ถ€ํ„ฐ ์ž์—ฐ์ˆ˜ n๊นŒ์ง€์˜ ๋ฒ”์œ„์—์„œ, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๊ฐ€ 1์ธ ์ž์—ฐ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.
  • ๋‹ค์‹œ ๋งํ•˜๋ฉด ์„œ๋กœ์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ์„œ๋กœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ณต์‹์œผ๋กœ ์˜ค์ผ๋Ÿฌ์˜ ํ”ผ ํ•จ์ˆ˜(Euler product formula; ์˜ค์ผ๋Ÿฌ ๊ณฑ ๊ณต์‹)์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • n์˜ ์†Œ์ธ์ˆ˜๋กœ P[i] = P[i] - P[i]/K (i๋Š” K์˜ ๋ฐฐ์ˆ˜) ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • n์ด ์†Œ์ˆ˜์ด๊ฑฐ๋‚˜, n์ด ์ง€์ˆ˜๊ฐ€ 1์ธ ์†Œ์ธ์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ, ์˜ค์ผ๋Ÿฌ ํ”ผ ํ•จ์ˆ˜๋ฅผ 1ํšŒ ๋” ์ ์šฉํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        long n = Long.parseLong(br.readLine());
        long result = n;

        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                result -= result / i;
                while (n % i == 0) {
                    n /= i;
                }
            }
        }
        if (n > 1)
            result -= result / n;
        bw.write(Long.toString(result));
        bw.flush();
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • n์€ ํ˜„์žฌ ์†Œ์ธ์ˆ˜์˜ ๊ตฌ์„ฑ์„ ํ‘œ์‹œํ•˜๊ณ , result๋Š” ์„œ๋กœ์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
  • 2๋ถ€ํ„ฐ n์˜ ์ œ๊ณฑ๊ทผ ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์†Œ์ธ์ˆ˜์ผ ๋•Œ ์˜ค์ผ๋Ÿฌ ํ”ผ ์—ฐ์‚ฐ result = result - (result/์†Œ์ธ์ˆ˜) ์œผ๋กœ result๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
    • n์—์„œ ํ•ด๋‹น ์†Œ์ธ์ˆ˜๋Š” ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค. ( ์†Œ์ธ์ˆ˜๊ฐ€ 3์ผ ๋•Œ, 3^2 x 5 => 5)
  • ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ณ   n์ด 1๋ณด๋‹ค ํฌ๋ฉด, n์ด ๋งˆ์ง€๋ง‰ ์†Œ์ธ์ˆ˜๋ผ๋Š” ๋œป์ด๋‹ค.
    • n์ด ์†Œ์ˆ˜๊ฑฐ๋‚˜, n์ด ์ง€์ˆ˜๊ฐ€ 1์ธ ์†Œ์ธ์ˆ˜๋ฅผ ๊ฐ€์งˆ ๋•Œ ์ด๋ฏ€๋กœ ์˜ค์ผ๋Ÿฌ ํ”ผ ์—ฐ์‚ฐ์„ 1ํšŒ ๋” ์ ์šฉํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์˜ค์ผ๋Ÿฌ ํ”ผ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์˜ˆ์‹œ ๋ฌธ์ œ๋กœ ํ’€์–ด๋ณด์•˜๋‹ค. ์ฒ˜์Œ์—” ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฐฐ์›Œ์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ณ„์‚ฐํ–ˆ๋‹ค.
    • p[n]๋งŒ ๊ตฌํ•˜๋ฉด ๋˜๋Š”๋ฐ ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์ด ๋งŽ์•„์ง€๋Š”๊ฐ€ ์‹ถ์—ˆ๋Š”๋ฐ, ์ž…๋ ฅ์ด long์œผ๋กœ ๋ฐ›์•„์•ผ ํ•ด์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.
    • ์•Œ์•„๋ณด๋‹ˆ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์„œ๋กœ์†Œ ๊ฒฐ๊ณผ๊ฐ’ result์™€ ์†Œ์ธ์ˆ˜ ๊ตฌ์„ฑ n์˜ ๋‘ ๊ฐ€์ง€ ๋ณ€์ˆ˜๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
    • n์ด ๋‚˜ํƒ€๋‚ด๋Š” ์†Œ์ธ์ˆ˜ ๊ตฌ์„ฑ์ด๋ผ๋Š” ๋ง์ด ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋์—ˆ๋Š”๋ฐ, 2๋ถ€ํ„ฐ n์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ž๋งˆ์ž ์ œ์™ธ์‹œํ‚ค๋‹ˆ๊นŒ i๊ฐ€ ๊ทธ๋ƒฅ ์ธ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ, ์†Œ์ธ์ˆ˜๊ฐ€ ๋œ๋‹ค๋Š”๊ฑธ ๊ฒจ์šฐ ์ดํ•ดํ–ˆ๋‹ค.
  • ์ •์ˆ˜๋ก  ๋ฌธ์ œ๋Š” ์ฐธ ์–ด๋ ต์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ณ„์‚ฐ ๋ฐฉ์‹์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ง„ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

 

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1033 : ์นตํ…Œ์ผ  (0) 2024.02.29
BOJ_1850 : ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜  (0) 2024.02.21
BOJ_1016 : ์ œ๊ณฑ ใ„ดใ„ด ์ˆ˜  (0) 2024.02.20
BOJ_1747 : ์†Œ์ˆ˜&ํŒฐ๋ฆฐ๋“œ๋กฌ  (0) 2024.02.20
BOJ_1456 : ๊ฑฐ์˜ ์†Œ์ˆ˜  (0) 2024.02.18