알고리즘 연습/백준
[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;
}
참고
728x90