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;
}