BOJ 문제풀이

백준 2436 c++ 풀이

koreasunoo 2021. 10. 10. 22:53

 

전략:

1. 1부터 루트(gcd*lcm)까지 작은 자연수를 설정한다.

2. 만약 그 자연수와 gcd*lcm/자연수의 GCD값이 주어진 gcd값과 같으면 result에 대입하고 출력한다.

코드:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll GCD(ll a, ll b){
	if(b==0){
		return a;
	}
	return GCD(b, a%b);
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	ll gcd, lcm;
	cin>>gcd>>lcm;
	ll result1, result2;
	for(ll i= 1; i*i<=gcd*lcm; ++i){
		ll a = i, b= gcd*lcm;
		if(b%a!=0){
			continue;
		}
		b/=a;
		if(GCD(a, b)==gcd){
			result1 = a;
			result2 = b;
		}
	}
	cout<<result1<<" "<<result2<<"\n";
}

'BOJ 문제풀이' 카테고리의 다른 글

백준 4673번 c++ 풀이  (0) 2021.10.10
백준 2193번 c++ 풀이  (0) 2021.10.10
백준 10867번 c++ 풀이  (0) 2021.09.19
백준 1026번 c++ 풀이  (0) 2021.09.19
백준 1182번 c++ 풀이  (0) 2021.09.19