QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#754941#9555. Strengthucup-team4801#WA 45ms3740kbC++141.7kb2024-11-16 16:07:092024-11-16 16:07:09

Judging History

你现在查看的是最新测评结果

  • [2024-11-16 16:07:09]
  • 评测
  • 测评结果:WA
  • 用时:45ms
  • 内存:3740kb
  • [2024-11-16 16:07:09]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

const int N = 25;
typedef long long LL;

int ret[N], nx[N];
LL f[N][3][2];

void solve(){
    memset(ret, 0, sizeof(ret));
    memset(nx, 0, sizeof(nx));
    LL x, n;
    scanf("%lld%lld", &x, &n);
    int len = 0;
    while(x)ret[++ len] = x % 10, x /= 10;

    len = 0;
    while(n)nx[++ len] = n % 10, n /= 10;

    memset(f, 0, sizeof(f));
    f[0][0][0] = 1;
    for(int i = 1; i <= 19; i ++){
        for(int cry = 0; cry <= 2; cry ++){
            for(int up = 0; up <= 1; up ++){
                if(!f[i - 1][cry][up])continue;

                for(int k = 0; k <= 9; k ++){
                    int nup = (k == nx[i]) ? up : (k > nx[i]), ncry;
                    if(ret[i] == 0){
                        if(k == 4 && cry != 0)ncry = 2;
                        else if(k >= 5)ncry = 1;
                        else ncry = 0;
                        f[i][ncry][nup] += f[i - 1][cry][up];
                    }
                    else if(ret[i] == 1){
                        if(k == 1) f[i][0][nup] += f[i - 1][cry][up];
                        else if(cry != 0)f[i][k >= 5][nup] += f[i - 1][cry][up];
                    }
                    else if(ret[i] == k){
                        if(cry != 1)f[i][0][nup] += f[i - 1][cry][up];
                    }
                    else if(ret[i] == k + 1){
                        if(cry != 0)f[i][0][nup] += f[i - 1][cry][up];
                    }
                }
            }
        }   
    }

    printf("%lld\n", f[19][0][0] + f[19][2][0]);
}

int main(){
    freopen("in", "r", stdin);

    int T;
    scanf("%d", &T);
    while(T --)solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 45ms
memory: 3740kb

input:

5
0 2147483646
10 100
671232353 1232363
123001006660996 3122507962333010
100019990010301090 44519984489341188

output:

70
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1...

result:

wrong answer 1st numbers differ - expected: '2147483647', found: '70'