比赛 |
2022级DP专题练习赛4 |
评测结果 |
AAAAAAAAAA |
题目名称 |
数字统计 |
最终得分 |
100 |
用户昵称 |
HeSn |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2023-02-20 20:12:45 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a, b, f2[20], f1[20], cnta[20], cntb[20];
void solve(int x, int *c) {
int num[20] = {0}, cnt = 0;
while(x) {
num[++ cnt] = x % 10;
x = x / 10;
}
for(int i = cnt; i >= 1; i --) {
for(int j = 0; j <= 9; j ++) {
c[j] += f1[i - 1] * num[i];
}
for(int j = 0; j < num[i]; j ++) {
c[j] += f2[i - 1];
}
int num2 = 0;
for(int j = i - 1; j >= 1; j --) {
num2 = num2 * 10 + num[j];
}
c[num[i]] += num2 + 1;
c[0] -= f2[i - 1];
}
}
signed main() {
freopen("countzj.in", "r", stdin);
freopen("countzj.out", "w", stdout);
cin >> a >> b;
f2[0] = 1;
for(int i = 1; i <= 15; i ++) {
f1[i] = f1[i - 1] * 10 + f2[i - 1];
f2[i] = 10 * f2[i - 1];
}
solve(a - 1, cnta);
solve(b, cntb);
for(int i = 0; i <= 9; i ++) {
cout << cntb[i] - cnta[i] << ' ';
}
return 0;
}