Algorithm/BOJ

[BOJ] ํผ๊ฑฐ์Šจ๊ณผ ์‚ฌ๊ณผ(2942)

vividswan 2022. 3. 5. 03:50

[๋ฐฑ์ค€(BOJ)] ํผ๊ฑฐ์Šจ๊ณผ ์‚ฌ๊ณผ(2942) C++

๋ฌธ์ œ : BOJ_2942๋ฒˆ ํผ๊ฑฐ์Šจ๊ณผ ์‚ฌ๊ณผ

๋ฌธ์ œ ์„ค๋ช…

์ˆ˜ํ•™, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

๋‘ ์ˆ˜์ธ R,G๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๋‘ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์™€ ๊ทธ ์ˆ˜๋กœ R,G๊ฐ€ ๋‚˜๋ˆ„์–ด์ง„ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.


Solution

๊ฒฐ๊ตญ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ๊ทธ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ž„์œผ๋กœ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ด์šฉํ•ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ ,
R,G๊ฐ€ ์ตœ๋Œ€ 10์–ต์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ๋ฐ˜๋ณต๋ฌธ์œผ๋ก  ์‹œ๊ฐ„์ดˆ๊ณผ ์ž„์œผ๋กœ ๋ฃจํŠธ N๋ฒˆ๊นŒ์ง€๋งŒ ๋ณด๋ฉด๋˜๋Š” ์•ฝ์ˆ˜์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•˜์—ฌ ๋ฃจํŠธ N๋ฒˆ๋งŒ์— ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Description

  1. ๋ฃจํŠธ N๋ฒˆ๋งŒ์— ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด, (์ตœ๋Œ€๊ณต์•ฝ์ˆ˜/์ฃผ์–ด์ง„ ์•ฝ์ˆ˜)๋ฅผ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‹ค์‹œ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์ด ๋•Œ ์ฃผ์–ด์ง„ ์•ฝ์ˆ˜ == (์ตœ๋Œ€๊ณต์•ฝ์ˆ˜/์ฃผ์–ด์ง„ ์•ฝ์ˆ˜)์ธ ๊ฒฝ์šฐ ์ฃผ์˜!)
  2. ๋ฌธ์ œ์—๋„ ์ฃผ์–ด์กŒ๊ณ , ์ŠคํŽ˜์…œ ์ €์ง€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์˜ ์ˆœ์„œ๋Š” ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main(void) {
    int r, g;
    int res_r, res_g;
    scanf("%d%d", &r, &g);
    res_r = r;
    res_g = g;
    if (r < g) swap(r, g);
    while (g) { // ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•
        int temp = r;
        r = g;
        g = (temp % g);
    }
    for (int i = 1; i <= sqrt(r); i++) {
        if ((r % i) == 0) {
            printf("%d %d %d\n", i, res_r / i, res_g / i);
            if(i!=(r/i))printf("%d %d %d\n", r / i, res_r / (r / i), res_g / (r / i));
            // ์ด ๋•Œ ์ฃผ์–ด์ง„ ์•ฝ์ˆ˜ != (์ตœ๋Œ€๊ณต์•ฝ์ˆ˜/์ฃผ์–ด์ง„ ์•ฝ์ˆ˜) ์ผ ๋•Œ,
        }
    }
    return 0;
}