[백준1860] 최대공약수

뚱환·2023년 5월 16일
0

https://www.acmicpc.net/problem/1850

입력

첫째 줄에 두 자연수 A와 B를 이루는 1의 개수가 주어진다. 입력되는 수는 263보다 작은 자연수이다

출력

첫째 줄에 A와 B의 최대공약수를 출력한다. 정답은 천만 자리를 넘지 않는다.

풀이

유클리드 호제법으로 최대공약수를 구하고 그 수만큼 1을 출력해주면 되는 문제다.

while (result > 0)
	{
		cout << 1;
		result--;
	}

최대공약수를 받고 이걸 이런식으로 출력하는 발상이 요즘 문제를 안 풀어서 조금 어려웠다.

코드

#include <iostream>

using namespace std;

int gcd(long long a, long long b) {
	if (b == 0)
	{
		return a;
	}
	else {
		return gcd(b, a % b);
	}
}

int main(void)
{

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	long a, b;
	cin >> a >> b;
	
	long result = gcd(a, b);
	while (result > 0)
	{
		cout << 1;
		result--;
	}
}
profile
https://github.com/lixxce5017/Algoritm_Weekly_Baekjoon

0개의 댓글