-
1934 : 최소공배수코딩문제/백준 2020. 7. 13. 00:56
최소공배수 구하는 식을 생각하면 간단한 문제다. (a,b의 최대공약수 * 숫자a * 숫자b)
최대공약수 구하는것은, a,b중 작은 수를 기준으로, 변수하나(num)를 만들어서 값을 넣고 반복문 돌리면서, 1씩 빼주면서, 두 수를 각각 num으로 나눈 나머지가 0이면 해당 num이 최대 공약수가 된다.
#include <iostream> #include <vector> using namespace std; int max_num(int a, int b) { //최대공약수 int num = 0; if (a > b) { for (int i = b; i > 0; i--) { if (a%i == 0 && b%i == 0) return num = i; } } else { for (int i = a; i > 0; i--) { if (a%i == 0 && b%i == 0) return num = i; } } } int min_num(int a, int b, int c) { //최소공배수 //c : 최대공약수 return (a / c) * (b / c) * c; } int main() { int a, b; int n; vector<int> tmp; cin >> n; for (int i = 0; i < n; i++) { cin >> a >> b; tmp.push_back(min_num(a,b,max_num(a,b))); } for (int i = 0; i < n; i++) { cout << tmp[i] << endl; } return 0; }
'코딩문제 > 백준' 카테고리의 다른 글
1978 : 소수찾기 (0) 2020.07.13 9613 : GCD 합 (0) 2020.07.13 2798 블랙잭 (0) 2020.07.09 2748 피보나치수 (0) 2020.07.09