문제
1850번: 최대공약수
모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A
www.acmicpc.net
문제 파악
: 1로 이루어진 수의 최대공약수는 두 수의 길이의 최대공약수가 해당 공약수의 길이가 되며 그 공약수 또한 1로 이루어지게 된다.
: 왜냐하면 두 수는 1로 이루어져 있기 때문에 위와 같은 이해가 만들어진다.
예시
- 1, 11, 111, 1111 → 1
- 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 |