๐Ÿ•๏ธ ICPC Sinchon/Basic Math

[BOJ][C++] ๋ฐฑ์ค€ 13241๋ฒˆ: ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

์„ ๋‹ฌ 2023. 1. 24. 00:35
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/13241

 

13241๋ฒˆ: ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

์ •์ˆ˜ B์— 0๋ณด๋‹ค ํฐ ์ •์ˆ˜์ธ N์„ ๊ณฑํ•ด ์ •์ˆ˜ A๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, A๋Š” B์˜ ๋ฐฐ์ˆ˜์ด๋‹ค. ์˜ˆ: 10์€ 5์˜ ๋ฐฐ์ˆ˜์ด๋‹ค (5*2 = 10) 10์€ 10์˜ ๋ฐฐ์ˆ˜์ด๋‹ค(10*1 = 10) 6์€ 1์˜ ๋ฐฐ์ˆ˜์ด๋‹ค(1*6 = 6) 20์€ 1, 2, 4,5,10,20์˜ ๋ฐฐ์ˆ˜์ด๋‹ค. ๋‹ค

www.acmicpc.net

 

๋ฌธ์ œ

์ •์ˆ˜ B์— 0๋ณด๋‹ค ํฐ ์ •์ˆ˜์ธ N์„ ๊ณฑํ•ด ์ •์ˆ˜ A๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, A๋Š” B์˜ ๋ฐฐ์ˆ˜์ด๋‹ค.

์˜ˆ:

  • 10์€ 5์˜ ๋ฐฐ์ˆ˜์ด๋‹ค (5*2 = 10)
  • 10์€ 10์˜ ๋ฐฐ์ˆ˜์ด๋‹ค(10*1 = 10)
  • 6์€ 1์˜ ๋ฐฐ์ˆ˜์ด๋‹ค(1*6 = 6)
  • 20์€ 1, 2, 4,5,10,20์˜ ๋ฐฐ์ˆ˜์ด๋‹ค.

๋‹ค๋ฅธ ์˜ˆ:

  • 2์™€ 5์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 10์ด๊ณ , ๊ทธ ์ด์œ ๋Š” 2์™€ 5๋ณด๋‹ค ์ž‘์€ ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • 10๊ณผ 20์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 20์ด๋‹ค.
  • 5์™€ 3์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 15์ด๋‹ค.

๋‹น์‹ ์€ ๋‘ ์ˆ˜์— ๋Œ€ํ•˜์—ฌ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

์ž…๋ ฅ

ํ•œ ์ค„์— ๋‘ ์ •์ˆ˜ A์™€ B๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ฃผ์–ด์ง„๋‹ค.

50%์˜ ์ž…๋ ฅ ์ค‘ A์™€ B๋Š” 1000(103)๋ณด๋‹ค ์ž‘๋‹ค. ๋‹ค๋ฅธ 50%์˜ ์ž…๋ ฅ์€ 1000๋ณด๋‹ค ํฌ๊ณ  100000000(108)๋ณด๋‹ค ์ž‘๋‹ค.

์ถ”๊ฐ€: ํฐ ์ˆ˜ ์ž…๋ ฅ์— ๋Œ€ํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ 64๋น„ํŠธ ์ •์ˆ˜๋กœ ์„ ์–ธํ•˜์‹œ์˜ค. C/C++์—์„œ๋Š” long long int๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Java์—์„œ๋Š” long์„ ์‚ฌ์šฉํ•˜์‹œ์˜ค.

์ถœ๋ ฅ

A์™€ B์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

a์™€ b์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = a * b /  a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

typedef long long ll;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    
    ll A, B, a, b, tmp;
    cin >> A >> B;
    
    a = A;
    b = B;
    if(a<b) {
        tmp = a;
        a = b;
        b = tmp;
    }
    
    // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    while(b!=0) {
        tmp = a%b;
        a = b;
        b = tmp;
    }
    ll gcd = a;
    
    // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    ll lcm = A / gcd * B;
    
    // ์ถœ๋ ฅ
    cout << lcm;
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•