본문 바로가기

문과 코린이의, [C. C++] 기록/C++ 백준 문제풀이

[문과 코린이의 IT 기록장] C++ 백준 문제풀이[BF] - 수 이어쓰기 1 (1748)

반응형

[문과 코린이의 IT 기록장] C++ 백준 문제풀이[BF] - 수 이어쓰기 1 (1748)

[문과 코린이의 IT 기록장] C++ 백준 문제풀이[BF] - 수 이어쓰기 1 (1748)

 


 

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net

[ 문제 ]

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

1234567891011121314151617181920212223...

이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

[ 입력 ]

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

[ 출력 ]

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

 


[ 코드 ]

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

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

	long long result = 0;
	
	for (int start = 1, len = 1; start <= N; start *= 10, len++)
	{
		int end = start * 10 - 1;
		if (end > N)
		{
			end = N;
		}
		result += (long long)(end - start + 1) * len;
	}

	cout << result << '\n';
	return 0;
}
반응형