U E D R , A S I H C RSS

1R/2016_09_15 (rev. 1.2)

1R/2016_09_15



1. 오늘의 문제

2. 참가자

  • 미시행

3. 코드

3.1. 15이원준


3.2. 박인서

#include <iostream>

int gcd(int a, int b) {
	while (a%b != 0) {
		int t = a%b;
		a = b;
		b = t;
	}
	return b;
}

int main() {
	int a, b;
	std::cin >> a >> b;

	int c = b / a, r = 1;
	for (int i = 1; i*i <= c; i++)
		if (i*(c / i) == c && gcd(i,c/i)==1) r = i;

	std::cout << a*r << ' ' << a*c / r;
	return 0;
}

3.3. 곽정흠


4. 아이디어

4.1. 15이원준


4.2. 박인서

  • 최대공약수를 a, 최소공배수를 b라 하면 b=a*x*y가 되도록 하면 두 수 a*x와 a*y가 원래의 두 수가 된다.
  • 이때 x와 y는 자연수여야 되고, 서로소여야한다.
  • 위의 아이디어를 이용하여 문제를 풀었다.

4.3. 곽정흠

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:07
Processing time 0.0227 sec