티스토리 뷰

https://www.acmicpc.net/problem/1748

 

1748번: 수 이어 쓰기 1

첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.

www.acmicpc.net

 

#include<iostream>
#include<string>

using namespace std;

int solv(int num){
    long res = 0;
    while(1){
        if(num < 10){
            res += num;
            return res;
        }

        int div = 10; // 입력받은 수의 길이를 측정
        int inputMinusNum = 1; // 999일 경우 (999 - 100) * 길이(3) 을 카운트

        while((num / div) != 0){ 
            div *= 10; 
        }
        div /= 10;

        string length_div = to_string(div);
        int length_div_integer = (int) length_div.length();
        // length_div - 1 만큼 *10

        for(int i = 0; i < length_div_integer - 1; i++){
            inputMinusNum *= 10;
        }
        res += (num - inputMinusNum + 1) * length_div_integer; 
        num = inputMinusNum - 1; // 1000, 100, 10 은 카운트 못하니까 위에서 + 1 해준다.
        // cout << num << endl;
    }
    return res;
}

int main(){
    int num;
    cin >> num;
    cout << solv(num);
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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
글 보관함