문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
구현해야할 조건
간단한 조건을 찾으면 되는 문제입니다. 1의 자리수는 9개 10의 자리 수는 99개 100은 999 .... 이런 규칙성을 띄고 있기 때문에 이와 관련해서 구현을 하면 됩니다.
code
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,sum;
int main()
{
cin >> n;
string str = to_string(n);
int num = 9;
for(int i = 1; i < str.length(); i++)
sum += 9 * pow(10, i -1) * i;
int start = pow(10, str.length() - 1);
sum += ((n - start) + 1) * str.length();
cout << sum;
return 0;
}
'PS > BaekJoon' 카테고리의 다른 글
[백준/c++] 10971 외판원 순회2 (0) | 2022.03.08 |
---|---|
[백준/c++] 10972 다음순열 / 10973 이전순열 (0) | 2022.03.08 |
[백준/c++] 9095 1,2,3 더하기 (0) | 2022.03.08 |
[백준/c++] 3085 사탕게임 (0) | 2022.03.08 |
[백준/c++] 2309 일곱 난쟁이 (0) | 2022.03.08 |