본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2436 공약수

by Alan_Kim 2024. 4. 4.
728x90
반응형

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

 

2436번: 공약수

첫째 줄에 두 개의 자연수가 빈칸을 사이에 두고 주어진다. 첫 번째 수는 어떤 두 개의 자연수의 최대공약수이고, 두 번째 수는 그 자연수들의 최소공배수이다. 입력되는 두 자연수는 2 이상 100,0

www.acmicpc.net

 

문제 해결

최소 공배수를 최대 공약수로 나누었을 때의 수를 서로소인 두 인수로 쪼개서 확인하는 작업을 하면 끝

 

CODE

import sys
input = sys.stdin.readline
import math

def solve(res,a):
    target = sys.maxsize
    x, y = -1, -1
    for i in range(1,int(math.sqrt(res)+1)):
        if res%i:continue
        j = res//i
        if math.gcd(i,j) != 1: continue
        if i*a + j*a < target:
            x = i*a; y = j*a
    print(x, y)
    return

if __name__ == "__main__":
    A, B = map(int, input().split())
    diff = B//A
    solve(diff,A)
728x90
반응형

댓글