BOJ_1748 : 수 이어 쓰기 1

less than 1 minute read

문제

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223…
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1≤N≤100,000,000)이 주어진다.

출력

첫째 줄에 새로운 수의 자릿수를 출력한다.

C++ 코드

#include <iostream>
using namespace std;

int main() {
	
	int n;
	cin >> n;

	long long ans = 0;
	//start = 현재 값
	//len = 현재 자릿수
	for (int start = 1, len = 1; start <= n; start *= 10, len++) {
		int end = start * 10 - 1;
		if (end > n)
			end = n;
		ans += (long long)(end - start + 1) * len;

	}
	cout << ans << '\n';
	return 0;
}


Updated:

Leave a comment