백준 1748 - 수 이어 쓰기1 (실버3)
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;
}
PREVIOUS[C/C++]백준 10819
NEXT[C/C++]백준 1158