πŸ•οΈ 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;
}

/*
 */
λ°˜μ‘ν˜•