Coding/백준

1748번 수 이어 쓰기 1

labote 2020. 7. 12. 17:24

 브루트 포스 기본 문제.

 

 Ex) 1200

 1~9 -> 9*1

 10~99 -> 90*2

 100~999 -> 900*3

 ......

 ...

 ..

 1000~1200 -> (1200-1000+1)*4

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
 
using namespace std;
 
string N;
long answer;
 
int main(){
    cin >> N;
    
    long size = N.size()-1;
    long k=1;
    long num=stoi(N);
    
    for(int i=1;i<=size;i++){
        k*=10;
    }
    
    answer+=(num-k+1)*(size+1);
    
    while(size){
        int a=1;
        int b=1;
        
        for(int i=1;i<=size;i++){
            a*=10;
        }
        for(int i=1;i<=size-1;i++){
            b*=10;
        }
        
        answer+=(a-b)*size;
        size--;
    }
    
    cout << answer << endl;
}
cs