본문 바로가기
백준 알고리즘

[백준 알고리즘] 1019 책 페이지

by ChocoPeanut 2017. 5. 17.

책 페이지


지민이는 N쪽인 책이 한권 있다. 첫 페이지는 1쪽이고, 마지막 페이지는 N쪽이다. 각 숫자가 모두 몇 번이 나오는지 출력하는 프로그램을 작성하시오.


변수의 선언으로 long long 을 사용해야 에러가 나타나지 않는다.


#include <iostream>

using namespace std;

long long ans[10];

void calc(long long n, long long ten) {

while (n > 0) {

ans[n % 10] += ten;

n = n / 10;

}

}

int main() {

long long start = 1;

long long end;

long long ten = 1;

cin >> end;

while (start <= end) {

while (start % 10 != 0 && start <= end) {

calc(start, ten);

start += 1;

}

if (start > end) break;

while (end % 10 != 9 && start <= end) {

calc(end, ten);

end -= 1;

}

long long cnt = (end / 10 - start / 10 + 1);

for (int i = 0; i <= 9; i++) {

ans[i] += cnt*ten;

}

start = start / 10;

end = end / 10;

ten = ten * 10LL;

}

for (int i = 0; i <= 9; i++) {

cout << ans[i] << ' ';

}

cout << '\n';

return 0;

}