#include <stdio.h>
int main() {
int n, count[10] = {0}, save = 0;
for(int i = 1; n != 0; i *= 10) {
int digit = n % 10; //슬라이싱
n /= 10; // 나머지 값으로 변경
//0은 숫자들의 이하에서 나오지만 앞에 나오는 값은 전혀 의미가 없기 때문에 이미 뺴줌
count[0] -= i;
for(int j = 0; j < 9; j++) count[j] += (n + (j < digit)) * i;
count[digit] += n * i + 1 + save; // 슬라싱한 자리값의 값은 (슬라이싱 * 자)
save += digit * i;
}
for(int i
= 0; i
< 10 ; i
++) printf("%d ", count
[i
]); return 0;
}
//핵심 . 각 슬라이싱 한 숫자의 밑
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBjb3VudFsxMF0gPSB7MH0sIHNhdmUgPSAwOwogICAgc2NhbmYoIiVkIiwgJm4pOwoKICAgIGZvcihpbnQgaSA9IDE7IG4gIT0gMDsgaSAqPSAxMCkgewogICAgICAgIGludCBkaWdpdCA9IG4gJSAxMDsgLy/siqzrnbzsnbTsi7EKICAgICAgICBuIC89IDEwOyAvLyDrgpjrqLjsp4Ag6rCS7Jy866GcIOuzgOqyvQoKICAgICAgICAvLzDsnYAg7Iir7J6Q65Ok7J2YIOydtO2VmOyXkOyEnCDrgpjsmKTsp4Drp4wg7JWe7JeQIOuCmOyYpOuKlCDqsJLsnYAg7KCE7ZiAIOydmOuvuOqwgCDsl4bquLAg65WM66y47JeQIOydtOuvuCDrurTspIwKICAgICAgICBjb3VudFswXSAtPSBpOwoJCWZvcihpbnQgaiA9IDA7IGogPCA5OyBqKyspIGNvdW50W2pdICs9IChuICsgKGogPCBkaWdpdCkpICogaTsKCQkKICAgICAgICBjb3VudFtkaWdpdF0gKz0gbiAqIGkgKyAxICsgc2F2ZTsgLy8g7Iqs65287Iux7ZWcIOyekOumrOqwkuydmCDqsJLsnYAgKOyKrOudvOydtOyLsSAqIOyekCkKICAgICAgICBzYXZlICs9IGRpZ2l0ICogaTsKICAgIH0KCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTAgOyBpKyspIHByaW50ZigiJWQgIiwgY291bnRbaV0pOwogICAgcmV0dXJuIDA7Cn0KCi8v7ZW17IusIC4g6rCBIOyKrOudvOydtOyLsSDtlZwg7Iir7J6Q7J2YIOuwkQo=