🔎 BACKJOON 4375

  • 문제

    2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

  • 입력

    입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

  • 출력

    1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.

#include <iostream>
using namespace std;

int main(int argc, char const *argv[]){
	int n, len, one;
	while (cin >> n){
		one = 1;
		len = 1;
		while (1){
			if(one % n == 0){
				break;
			}
			else{
				len++;
				one = one * 10 + 1;
				one %= n;
			}
		}
		cout << len << "\n";
	}
	
	return 0;
}

독해력이 부족해서 문제해석에 있어서 많이 헷갈렸다.. 문제에서 말하는 바는 3을 입력 시 3의 배수중 1, 11, 111 …으로 1로만 이루어진 수로 나누어 떨어지는 숫자의 길이를 출력하는 것!

따라서 long long의 max값을 넘길 수 있기 때문에 mod연산을 이용하여 값을 줄여가며 구해야 한다.

문제 링크

풀이 깃허브 링크

댓글남기기