求调
查看原帖
求调
128558
Franky_Tang楼主2024/9/23 11:41

过了样例但只有30分,后面7个全WA

#define  _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
ll f[50], l, r, ans[2][20];
void slv(ll m, ll* a) {
	if (m < 10) {
		for (ll i = 1; i <= m; i++) {
			a[i]++;
		}
		return;
	}
	ll j = 1,  i = 0;
	for (ll x, strt = 0, n = m; n > 0; i++) {
		if (n < 10) {
			strt = 1;
		}
		x = n % 10;
		for (ll k = 0; k <= 9; k++) {
			a[k] += (x - strt) * f[i];
		}
		for (ll k = strt; k < x; k++) {
			a[k] += j;
		}
		a[strt]--;
		a[x]++;
		n /= 10;
		for (int k = n; k > 0; k /= 10) {
			a[k % 10] += (x - strt) * j;
		}
		j *= 10;
	}
	j /= 10;
	i--;
	//printf("%lld\n", j);
	a[0] += i;
	a[1]++;
	slv(j - 1, a);
}
int main()
{
	scanf("%lld%lld", &l, &r);
	for (ll i = 1, j = 1; i <= 15; i++) {
		f[i] = 10 * f[i - 1] + j;
		j *= 10;
	}
	slv(l - 1, ans[0]);
	slv(r, ans[1]);
	for (ll i = 0; i <= 9; i++) printf("%lld ", ans[1][i] - ans[0][i]/**/);
	return 0;
}








2024/9/23 11:41
加载中...