玄关
查看原帖
玄关
1294410
yuruilin2026楼主2024/9/14 18:39

完全对不了,求助万能的洛谷网民,悬关
代码如下:

#include <bits/stdc++.h>
using namespace std;
long long dp[100][10];//dp[i][j]表示现在正在i位,首位为j的数字和 
long long l,r;
long long make(long long x){
	long long len = 0,sum = 0,a[1145] = {};
	while(x > 0){
	    a[++len] = x % 10,x /= 10;
	}
	for(long long i = 1;i <= len-1;i++){
		for(long long j = 1;j <= 9;j++){
			//cout << i << " " << j << "     ";
			sum += dp[i][j];
			sum %= int(1e9+7);
		}
	}
	for(long long i = len;i >= 1;i--){
	    for(long long j = 1;j < a[i];j++){
	    	//cout << i << " " << j << "     ";
	        sum += dp[i][j];
	        sum %= int(1e9+7);
	    }
	}
	//cout << endl;
	return sum ;
}
void work(){
	for(int i = 0;i <= 9;i++){
		dp[1][i] = i;
	}
	for(int i = 2;i <= 70;i++){
		for(int j = 0;j <= 9;j++){
			for(int k = 0;k <= 9;k++){
				dp[i][j] += dp[i-1][k] + j;
				dp[i][j] %= int(1e9+7);
			}
		}
	}
	/*
	for(int i = 1;i <= 5;i++){
		for(int j = 0;j <= 9;j++){
			cout << dp[i][j] << " ";
		}
		cout << endl;
	}
	*/
}
int main(){
	work();
	int t;
	cin >> t;
	while(t--){
		cin >> l >> r;
		cout << make(r+1) - make(l) << endl;
	}
	return 0;
}

蒟蒻码风不好,请各位dalao见谅

2024/9/14 18:39
加载中...