책 페이지
지민이는 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;
}
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 2193번 이친수 (0) | 2017.05.17 |
---|---|
[백준 알고리즘] 1789번 수들의 합 (0) | 2017.05.17 |
[백준 알고리즘] 1193번 분수찾기 (1) | 2017.05.17 |
[백준 알고리즘] 1152번 단어의 개수 (1) | 2017.05.17 |
[백준 알고리즘] 1065번 한수 (0) | 2017.05.17 |