본문 바로가기

알고리즘

[코드업] 2102 - 배수(hard)

더보기

입력 예시   

3

출력 예시

111

#include<iostream>
#include<algorithm>
using namespace std;

unsigned long long N;

// 2^64는 10^20보다 작다.
// 따라서 1또는 0으로 만들 수 있는 최대의 수는 1을 20번쓰는 것이다..
const unsigned long long limit = 11111111111111111111;							     
unsigned long long minValue = UINT64_MAX;

void solve(unsigned long long start){
	if (start % N == 0) 
		minValue = min(minValue, start);

	if (start > limit / 10) 
		return;
	solve(start * 10 + 1);
	solve(start * 10);
}
int main(){
	cin >> N;

	if (N > limit) {
		printf("0");
		return 0;
	}

	solve(1);

	if (minValue == UINT64_MAX)
		cout << 0;
	else cout << minValue;
	return 0;

}

 

'알고리즘' 카테고리의 다른 글

[코드업] 3021 - 큰 수 덧셈  (0) 2020.01.21
[코드업] 3500 - 지뢰 찾기 2  (0) 2019.12.28
[백준] 2468 - 안전 영역  (0) 2019.11.30
[백준] 7569 - 토마토  (0) 2019.11.16
[백준] 17779 - 게리맨더링 2  (0) 2019.11.03