[C++/伯俊]1934最小公倍数
#1934最小公倍数
https://www.acmicpc.net/problem/1934
📝問題点最大承諾数(普通/ユークリッド湖製法) を求めます最小公倍数=a*b/最大公倍数 ハーモニー
最大承諾数の第1種の方法を求めます
->2つの自然数の最大承諾数を求めるアルゴリズム
比較対象の2つの自然数aとb(ただしa>b)aをbで割った残りの数がrの場合、GCD(a,b)=GCD(b,r)と同じであり、「rが0の場合、bは最大公約数である.」これはこの原理を利用したアルゴリズムである.
ex)GCD(24,16)->GCD(16,8)->GCD(8,0):最大公約数=8
注意:https://coding-factory.tistory.com/599
https://www.acmicpc.net/problem/1934
📝問題点
最大承諾数の第1種の方法を求めます
#include <iostream>
#include <algorithm>
using namespace std;
int maxNum(int a, int b) { //최대공약수 구하는 함수
int n = min(a, b);
int result;
for (int i = 1; i <= n; i++) {
if (a % i == 0 && b % i == 0)
result = i;
}
return result;
}
int main() {
int num;
scanf("%d", &num);
for (int i = 0; i < num; i++) {
int a, b, max;
scanf("%d %d", &a, &b);
max = maxNum(a, b); //최대공약수
cout << a * b / max<<'\n';
}
}
最大承諾数の第2の方法を求めます(推薦して、ユークリッドの弧は法を取り除きます)#include <iostream>
#include <algorithm>
using namespace std;
int GCD(int a, int b){
if (b == 0) return a;
else return GCD(b, a % b);
}
int main() {
int num;
scanf("%d", &num);
for (int i = 0; i < num; i++) {
int a, b, maxNum;
scanf("%d %d", &a, &b);
maxNum = GCD(a, b); //최대공약수
cout << a * b / maxNum<<'\n';
}
}
📝ユークリッド湖製法?->2つの自然数の最大承諾数を求めるアルゴリズム
比較対象の2つの自然数aとb(ただしa>b)aをbで割った残りの数がrの場合、GCD(a,b)=GCD(b,r)と同じであり、「rが0の場合、bは最大公約数である.」これはこの原理を利用したアルゴリズムである.
ex)GCD(24,16)->GCD(16,8)->GCD(8,0):最大公約数=8
注意:https://coding-factory.tistory.com/599
Reference
この問題について([C++/伯俊]1934最小公倍数), 我々は、より多くの情報をここで見つけました https://velog.io/@513sojin/백준C-1934-최소공배수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol