样例过了,一个点不对,求助大佬qaq
查看原帖
样例过了,一个点不对,求助大佬qaq
877377
qzhfx楼主2023/5/31 18:02
#include<bits/stdc++.h>
#define endl "\n"
#define inf 0x3f3f3f3f
using ll = long long;
using namespace std;
using PII = pair<int, int>;
const int N = 20;
const int mod = 1e9 + 7;
ll dp[N], pd[N];
void init() {
	pd[0] = 1;
	for (int i = 1; i <= 15; i++) {
		dp[i] = i * pd[i - 1];
		pd[i] = pd[i - 1] * 10;
	}
}
void solve(ll x, vector<ll>&a) {
	vector<int>v;
	v.push_back(0);
	int len = 0;
	while (x) {
		len ++ ;
		v.push_back(x % 10);
		x /= 10;
	}
	//ll ans=0;
	for (int i = len; i > 0; i--) {
		for (int j = 0; j <= 9; j++)a[j] += dp[i - 1] * v[i];
		for (int j = 0; j < v[i]; j++)a[j] += pd[i - 1];
		ll ans = 0;
		for (int j = i - 1; j > 0; j--)ans += ans * 10 + v[j];
		a[v[i]] += ans + 1;
		a[0] -= pd[i - 1];
	}
}
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	init();
	ll a, b;
	cin >> a >> b;
	//ll ans = solve(b) - solve(a - 1);
	vector<ll>a1(13, 0), b1(13, 0);
	solve(a - 1, a1), solve(b, b1);
	for (int i = 0; i <= 9; i++) {
		cout << b1[i] - a1[i] << " \n"[i == 9];
	}
	return 0;
}
2023/5/31 18:02
加载中...