본문 바로가기
Problem Solving/코드포스

[코드포스] 822A : I'm bored with life

by shinbian11 2020. 7. 2.

https://codeforces.com/problemset/problem/822/A

 

Problem - 822A - Codeforces

 

codeforces.com


<C++>

#include <bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	int a, b, ans = 1;
	cin >> a >> b;
	for (int i = 1; i <= min(a, b); i++)
		ans *= i;
	cout << ans << endl;
}

 

> 각각의 팩토리얼을 구하고 나서, gcd를 구하기 위해 따로 함수를 만들고.. 이것저것 해봤는데 잘 안되더라고요. 

코드도 복잡해지고...

배점 800점 짜리 문제의 코드가 그렇게 길 것 같진 않아서 그냥 싹 갈아엎고 윗 코드로 재도전했더니 Accepted 받았습니다.

 

> a와 b의 최솟값(min(a,b))을 결정하여, 1부터 그 최솟값까지 곱하면 그것이 곧 답이 됩니다.

 

> 만약 a>b라면, 

a = 1*2*3*...*b*(b+1)*....a

b = 1*2*3*...*b 입니다. 

다시 말해, a와 b의 gcd(최대공약수)는 1*2*3*...b가 될 것입니다. 

 

그러므로 1부터 min(a,b)까지의 곱이 답이 되는 것입니다.