hyunjin

[C++][BOJ-2609]최대공약수,최소공배수 관련 문제들 __gcd 본문

알고리즘 연습/백준

[C++][BOJ-2609]최대공약수,최소공배수 관련 문제들 __gcd

_h.j 2021. 2. 16. 19:05
728x90

 

백준 2609 최대공약수 최소공배수

 

소스 코드

직접 구현

#include <bits/stdc++.h>
using namespace std;
int GCD(int a,int b){
	return b? GCD(b,a%b) : a;
} 
int main(){
	int a,b,g;
	scanf("%d %d",&a,&b); 
	g = (a>b) ? GCD(a,b) : GCD(b,a);
	printf("%d\n%d",g,a*b/g);	
	return 0;
} 

gcd 라이브러리 사용

int main(){
	int a,b;
	cin>>a>>b;	
	cout<<__gcd(a,b)<<"\n"<<a*b/__gcd(a,b);
	return 0;
} 

lcm은 라이브러리 사용시 에러나서 뭐 이렇게 진행.

 


백준 1934 최소공배수

소스코드

#include <bits/stdc++.h>
using namespace std;
int main(){
	int a,b;
	for(scanf("%*d"); ~scanf("%d %d",&a,&b) ;) 
		printf("%d\n",a*b/__gcd(a,b));
	return 0;
	
	// lcm 라이브러리 사용시...나는 에러나니까 왜일까   
//	ios_base::sync_with_stdio(0);
//	int T, A, B;
//	cin >> T;
//	while (T--)
//		cin >> A >> B, cout << lcm(A, B) << '\n';
} 

lcm 사용이 왜 불가한지... dev c++ 에서는 왜 오류나 나는지


백준 1850 최대공약수

 

규칙 보면 1개수의 최대공약수를 구한 후 그 만큼 1 출력하면 된다.

 

소스 코드

#include <bits/stdc++.h>
using namespace std;
int main(){
	long long a,b;
	int d;
	scanf("%lld %lld",&a,&b);
	d = __gcd(b,a);
	while(d--) printf("1");
	return 0;
}

 

 

 

참고

geeksforgeek c++ gcd

 

 

728x90