样例过,0分求调!
查看原帖
样例过,0分求调!
816792
coritom楼主2024/5/19 21:39
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 15;
int a, b, cnt1[maxn], cnt2[maxn];
int num[maxn], dp[maxn], ten[maxn];
void init(){
	ten[0] = 1;
	for(int i = 1; i <= maxn; i++){
		dp[i] = dp[i - 1] * 10 + ten[i - 1];
		ten[i] = ten[i - 1] * 10;
	}
}
void change(int x, int *cnt){
	int len = 0;
	while(x){
		num[++len] = x % 10;
		x /= 10;
	}
	for(int i = len; i >= 1; i--){
		for(int j = 0; j <= 9; j++){
			cnt[j] += dp[i - 1] * num[i];
		} 
		for(int j = 0; j < num[i]; j++){
			cnt[j] += ten[i - 1];
		}
		int sum = 0;
		for(int j = i - 1; j >= 1; j--){
			sum = sum * 10 + num[j];
		}
		cnt[num[i]] += sum + 1;
		cnt[0] -= ten[i - 1];
	}
}
signed main(){
	ios_base::sync_with_stdio(false);
	cout.tie(0), cin.tie(0);
	init();
	while(cin >> a >> b){
		if(a == 0 && b == 0) break;
		if(a > b) swap(a, b);
		change(a - 1, cnt1);
		change(b, cnt2);
		for(int i = 0; i <= 9; i++){
			cout << cnt2[i] - cnt1[i] << " ";
		} 
		memset(cnt1, 0, sizeof cnt1);
		memset(cnt2, 0, sizeof cnt2);
		cout << "\n";
	}
	return 0;
}
2024/5/19 21:39
加载中...