11번의 문제와 같은데, 아주 아주 큰 수를 받았을 때 어떻게 빠르게 처리 할 것 이냐를 묻고 있다. 10의 단위로 나눠주면서 1의자리수는 1, 10의자리수는 2, 100의 자리수는 3 을 곱해주면서 계산했다.
1 ~ 9
10 ~ 99
100 ~ 999
int main(int argc, char** argv) {
int num = 0;
int min = 1;
int max = 9;
int gob = 1;
int accumulate = 1;
int cnt = 0;
//freopen("input.txt", "rt", stdin);
scanf("%d", &num);
int save = num;
while(num > 0)
{
if(num < 10)
{
save = save - min + 1;
save *= accumulate;
cnt += save;
break;
}
else
{
max = min * 10 -1;
cnt += (max - min + 1) * accumulate;
accumulate++;
min *= 10;
}
num /= 10;
}
cout << cnt <<endl;
return 0;
}