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;
}
Leave a comment