玄关!95Pts求调
查看原帖
玄关!95Pts求调
1128559
guoguo160楼主2025/1/30 23:17

95Pts\texttt{95Pts}WA\texttt{WA} on #18,看信息应该是输出 00,我的输出了 22

思路就是建两个数组,一个存储当前的方案数,另一个存储当前数位和。

WA记录

#include <bits/stdc++.h>

#define int long long  

using namespace std;

const int N = 20;
const int Mod = 1e9 + 7;

int t;
int z[N];
int f[N][2];
int g[N][2];

int dp(int num) {
    int n = 0;
    while (num) {
        z[++n] = num % 10;
        num /= 10;
    }
    memset(f, 0, sizeof f);
    memset(g, 0, sizeof g);
    f[n + 1][1] = 1;
    for (int i = n;i >= 1;--i) {
        for (int j = 0;j < 2;++j) {
            int up = 9;
            if (j == 1) {
                up = z[i];
            }
            for (int k = 0;k <= up;++k) {
                (f[i][(j == 1) && (k == up)] += f[i + 1][j]) %= Mod;
                (g[i][(j == 1) && (k == up)] += f[i + 1][j] * k % Mod + g[i + 1][j]) %= Mod;
            }
        }
    }
    return (g[1][0] + g[1][1]) % Mod;
}

signed main() {
    cin >> t;
    while (t--) {
        int l, r;
        cin >> l >> r;
        cout << ((dp(r) - dp(l - 1)) % Mod + Mod) % Mod << "\n";
    }
    return 0;
}
2025/1/30 23:17
加载中...