주녘공부일지

[백준 4375번 C++] Silver3. 1 본문

CodingTest/BeakJoon Silver

[백준 4375번 C++] Silver3. 1

주녘 2024. 12. 6. 17:35

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

핵심 아이디어 및 정답 코드

- 큰 수를 대상으로 % 연산 시, 많은 수를 나눠야 하므로, 대상의 크기를 줄임

 -> 모듈러 성질 이용 : (A * B) % C = (A % C) * (B % C)

  -> 자료형 크기를 벗어나는 것도 방지할 수 있음

 

+ 출력할 때, 개행 문자를 추가하지 않으면 출력 양식에 맞지 않아 실패

 

정답 코드

#include <iostream>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int target;
    while (cin >> target)
    {
        int num = 1; // 타겟으로 나누어지는 대상
        int count = 1; // 1의 개수

        while (num % target != 0)
        {
            num = (num * 10 + 1) % target;
            count++;
        }

        cout << count << "\n";
    }
    
    return 0;
}