수 이어 쓰기 1
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 2766 | 1514 | 1318 | 58.918% |
문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223…
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1≤N≤100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
예제 입력 1 복사
1
120
예제 출력 1 복사
1
252
풀이
알고리즘을 생각해내고, 문제를 풀고, ‘틀렸습니다’ 끝에 ‘맞았습니다!!’를 보면 기분이 정말 좋다.
그러곤 다른 사람들의 코드를 보는데, 나보다 훨씬 효율적으로 짠 코드를 볼때면 아.. 진짜 대단한 사람들이 많다 나는 너무 부족하다를 뼈저리게 느낀다 ㅠㅠ,, 다른 사람들의 코드를 보는 것도 실력향상에 좋다는데 가끔은 우울해진댜,,,, 다들 넘잘해
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "math.h"
using namespace std;
int main(){
int sum[10]= {0,};
int i, n, result=0;
cin >> n;
sum[0]=0;
for(i=1;i<10;i++){
sum[i]=9*pow(10,i-1)*i + sum[i-1];
}
for(i=10;i>=0;i--){
if(n>=pow(10,i)){
result = n-pow(10,i)+1;
result =result*(i+1) + sum[i];
cout << result;
return 0;
}
} //int main()