範例程式碼 uva1640
//uva1640
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
vector<int> i2v(int n) {
vector<int> output;
while (n != 0) {
output.push_back(n % 10);
n /= 10;
}
reverse(output.begin(), output.end());
return output;
}
void solve(const int n, vector<int>& result) {
vector<int> vec_num = i2v(n);
int digits = vec_num.size();
int power = pow(10, digits - 1);
for (int i = 0; i < digits; i++) {
for (int j = 0; j < vec_num[i]; j++) {
result[j] += power;
}
for (int j = 0; j < 10; j++) {
result[j] += power / 10 * (digits - i - 1) * vec_num[i];
}
if (i + 1 < digits) {
result[vec_num[i]] += n % power;
}
result[vec_num[i]]++;
result[0] -= power;
power /= 10;
}
}
int main() {
int a, b;
vector<int> result_a(10, 0), result_b(10, 0);
while (cin >> a >> b && a && b) {
result_a.assign(10, 0);
result_b.assign(10, 0);
if (a > b) swap(a, b);
solve(a - 1, result_a);
solve(b, result_b);
for (int i = 0; i < 9; i++) {
cout << result_b[i] - result_a[i] << " ";
}
cout << result_b[9] - result_a[9] << endl;
}
return 0;
}