Submission #1496

#TimeUsernameProblemLanguageResultExecution timeMemory
1496tncks0121생일수 II (GA4_birthday2)C++98
45 / 100
1000 ms1276 KiB
#include <stdio.h>
#include <string.h>

typedef long long ll;
char X[200005],Y[200005]; int XN, YN;
const ll MOD = 19980305;
ll res;

bool same() {
    if(XN != YN) return false;
    for(int i = 1; i <= XN; i++) if(X[i] != Y[i]) return false;
    return true;
}

int main() {
    int i, j;
    
    scanf("%s%s", X+1, Y+1);
    XN = strlen(X+1);
    YN = strlen(Y+1);
    
    ll last = 0;
    for(i = 1; i <= XN; i++) last = (last * 10 + X[i] - '0') % MOD;
    
    do {
        ll now = 0;
        for(i = XN; i > 0; i--) {
            if(X[i] == '3') {X[i] = '5'; break; }
            else if(X[i] == '5') {X[i] = '8'; break; }
            else X[i] = '3';
        }
        
        if(i <= 0){
            ++XN;
            for(i = 1; i <= XN; i++) X[i] = '3';
        }
        
        for(i = 1; i <= XN; i++) now = (now * 10 + X[i] - '0') % MOD;
        res = (res + last * now) % MOD;
        last = now;
    }while(!same());
    
    printf("%lld\n", res);
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...