문제 :
벡터 2,6,8,14 의 최소공배수를 구하여라
최소공배수 = 두수의 곱 / 최소공약수
최소공약수 -> 유클리드 호제법?
값은 나오는데 정답이 안나온다
#include<iostream> #include<vector> #include<algorithm> using namespace std; int gcd(long long a, long long b) { int c; while (b != 0) { c = a % b; a = b; b = c; } return a; } int lcm(long long a, long long b) { return (a * b) / gcd(a, b); } long long nlcm(vector<int> num) { long long answer = 0; long long* dp = new long long[num.size()]; dp[0] = num[0]; for(int i=1;i<num.size();i++){ dp[i] = lcm(num[i],dp[i-1]); } answer = dp[num.size()-1]; return answer; } int main() { vector<int> test{2,6,8,14}; // 아래는 테스트로 출력해 보기 위한 코드입니다. cout << nlcm(test); }
'ALGORITHM' 카테고리의 다른 글
[?]프로그래머스_level3_시저암호 (0) | 2017.09.09 |
---|---|
프로그래머스_level3_야근지수 (0) | 2017.09.08 |
프로그래머스_level3_멀리뛰기 (0) | 2017.09.06 |
프로그래머스_level3_다음큰숫자 (0) | 2017.09.05 |
정수론_마법의 약 (0) | 2017.08.17 |