完全对不了,求助万能的洛谷网民,悬关
代码如下:
#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见谅