[C/C++]백준 1748

 

백준 1748 - 수 이어 쓰기1 (실버3)

1748 문제 링크

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223…
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
1부터 9까지는 숫자의 길이가 1이고, 10부터 99까지는 숫자의 길이가 2이다. 이를 이용해서 코드를 짜보았다.
- 처음에 10을 저장하는 변수를 지정하고, 반복문을 통해 1부터 n까지 i를 증가시킨다. 그리고 만약 i가 10이 될 경우, 10으로 저장했던 변수에 x10을 해준다. 이러한 과정을 반복해서, i가 10, 100, 1000이 될 때마다 10을 곱해주고, 숫자의 길이를 +1씩 증가해준다.
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
using namespace std;

int main() {
	int n;
	int x = 1; 
	int len = 0; 
	int z = 10;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		len += x;
		if (i + 1 == z) {
			z *= 10;
			x++;
		}
	}
	printf("%d", len);
	return 0;
}