1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
첫째 줄에 새로운 수의 자릿수를 출력한다.
분석
1자리 숫자는 9개 2자리 숫자는 90개 3자리 숫자는 900개로 자릿수가 증가할때 마다 개수는 10배씩 증가한다.
이를 이용하여 입력받은 수의 자리수를 계산한다.
코드
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int ans = 0, k = 1, i;//K는 자릿수를 나타냄
for (i = 9;n; i *= 10, k++) {
if (n>i) { //n이 i이상이면
ans += i* k; //자리수 * i를 더함
n-=i; //n의 값은 i만큼 뺴줌
}
else { //i<n이면
ans += k*n;
break;
}
}
cout << ans << endl;
}
결과

+제출할때 수 이어쓰기1(1748)이 아닌 수 이어쓰기(1515)에 제출하는 실수가 있었는데 문제 잘 확인하자.......