[210603][백준/BOJ] 1850번 최대공약수

문제

입출력

풀이

A가 111이고 B가 1111일때 최대 공약수는 1이며
A가 1111이고 B가 111111일떄 최대 공약수는 111이다.

따라서 유클리드 호제법으로 최대공약수를 구하고 최대공약수만큼 1을 출력해주면 된다.
입력되는 수가 2^63보다 작은 자연수이므로 int형 대신에 long long형을 사용한다.

코드

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll gcd(ll a, ll b)
{
    ll r;
    while (b != 0) 
    { 
        r = a % b; 
        a = b; 
        b = r; 
    } 
    return a;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll a, b;
    cin >> a >> b;

    for (int i = 0; i < gcd(a, b); ++i)
        cout << '1';
}

좋은 웹페이지 즐겨찾기