문제풀이

BaekJoon(1850)::최대공약수

문제

 

1850번: 최대공약수

모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A

www.acmicpc.net

문제 파악

: 1로 이루어진 수의 최대공약수는 두 수의 길이의 최대공약수가 해당 공약수의 길이가 되며 그 공약수 또한 1로 이루어지게 된다.

: 왜냐하면 두 수는 1로 이루어져 있기 때문에 위와 같은 이해가 만들어진다.

 

예시

  1. 1, 11, 111, 1111 → 1
  2. 11, 1111, 111111 → 11, 1111 

문제풀이

: 두 수의 길이의 최대공약수를 구하면 그 값이 주어진 두수의 최대공약수의 길이가 된다.

#include<iostream>
#include<cmath>

using namespace std;

unsigned long long int GCD(unsigned long long int a, unsigned long long int b) {
	return (b == 0) ? a : GCD(b, a % b);
}

int main() {

	unsigned long long int a, b;
	cin >> a >> b;

	for (int i = 0;i < GCD(a, b);i++) {
		cout << "1";
	}
        
	return 0;
}

 

'문제풀이' 카테고리의 다른 글

BaekJoon(2447)::별찍기-10  (0) 2021.11.03
BaekJoon(9020)::골드바흐의 추측  (0) 2021.07.19
BaekJoon(1085)::직사각형에서 탈출  (0) 2021.07.19
BaekJoon(2869)::달팽이는 올라가고 싶다  (0) 2021.07.19
BaekJoon(2292)::벌집  (0) 2021.07.19