Submission details
Task:A TIMES B!
Sender:UnoK-admin
Submission time:2025-10-29 16:58:45 +0200
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.03 sdetails
#2ACCEPTED0.03 sdetails
#3ACCEPTED0.03 sdetails
#4ACCEPTED0.03 sdetails
#5ACCEPTED0.03 sdetails
#60.03 sdetails
#70.03 sdetails
#80.03 sdetails
#90.03 sdetails
#100.03 sdetails
#11ACCEPTED0.03 sdetails
#120.03 sdetails
#130.03 sdetails
#14ACCEPTED0.03 sdetails
#150.03 sdetails
#160.03 sdetails
#170.03 sdetails
#180.03 sdetails
#190.03 sdetails
#200.03 sdetails
#210.03 sdetails
#220.03 sdetails
#230.03 sdetails
#240.03 sdetails
#250.03 sdetails
#260.03 sdetails
#270.03 sdetails
#280.03 sdetails
#290.03 sdetails
#300.03 sdetails
#310.03 sdetails
#320.03 sdetails
#330.03 sdetails
#340.03 sdetails
#350.03 sdetails
#360.03 sdetails
#370.03 sdetails
#380.03 sdetails
#390.03 sdetails
#400.03 sdetails
#410.03 sdetails
#420.03 sdetails
#430.03 sdetails
#440.03 sdetails
#450.03 sdetails
#460.03 sdetails
#470.03 sdetails
#480.03 sdetails
#490.03 sdetails
#500.03 sdetails
#510.03 sdetails
#520.03 sdetails
#530.03 sdetails
#540.03 sdetails
#550.03 sdetails
#560.07 sdetails
#570.08 sdetails
#580.07 sdetails
#590.07 sdetails
#600.05 sdetails
#610.45 sdetails
#620.50 sdetails
#630.50 sdetails
#640.24 sdetails
#650.44 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:124:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  124 |     for(int i=0; i<a.size(); i++) a[i] = sa[i]-'0';
      |                  ~^~~~~~~~~
input/code.cpp:125:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  125 |     for(int i=0; i<b.size(); i++) b[i] = sb[i]-'0';
      |                  ~^~~~~~~~~
input/code.cpp:131:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  131 |     for(int i=0; i<c.size()-1; i++){
      |                  ~^~~~~~~~~~~

Code

#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pb push_back
#define VI vector<int>
#define AR(x) array<int, x>
#define MX vector<VI >
#define all(x) x.begin(), x.end()
#define IOS cin.tie(0)->sync_with_stdio(0)

using namespace std;

template<int MOD, int U> struct NTT {

    int B = 0;
    vector<vector<int> > w;
    vector<int> invbit;

    NTT(int B_) : B(B_), w(B_), invbit(1<<B_, 0) {
        
        w[B-1].resize(1<<(B-1));
        w[B-1][0] = 1;
        int u = pwr(U, (MOD-1)>>B);
        for(int i=1; i<(1<<(B-1)); i++) w[B-1][i] = (long long)w[B-1][i-1]*u%MOD;
        if(B>1) invbit[1] = 1;

        for(int b=B-2; b>=0; b--){
            int n = 1<<b, nn = 1<<(B-b-1);
            w[b].resize(n);
            for(int i=0; i<nn; i++){
                invbit[i] <<= 1;
                invbit[i+nn] = invbit[i]|1;
            }
            for(int i=0; i<n; i++) w[b][i] = w[b+1][2*i];
        }
    }

    int pwr(int a, int b){
        int p = 1;
        for(;b; b/=2){
            if(b&1) p = (long long)p*a%MOD;
            a = (long long)a*a%MOD;
        }
        return p;
    }
    
    int div(int x){
        int v0 = MOD, v1 = x, r0 = 0, r1 = 1;
        while(v1){
            int d = v0/v1;
            r0 -= d*r1; v0 -= d*v1;
            swap(v0, v1); swap(r0, r1);
        }
        return r0 < 0 ? r0+MOD : r0; 
    }

    void ntt(vector<int > &v, bool inv = 0){
        
        int n = v.size();
        int b = 0;
        while(1<<b < n) b++;
        
        n = 1<<b;
        v.resize(n, 0);

        int shift = B-b;
        for(int i=0; i<n; i++){
            if(i < invbit[i]>>shift) swap(v[i], v[invbit[i]>>shift]);
        }

        for(int r=0; r<b; r++){
            int rd = 1<<r;
            for(int i=0; i<n; i+=2*rd){
                for(int j=i; j<i+rd; j++){
                    long long tmp = (long long)w[r][j-i]*v[j+rd];
                    v[j+rd] = (v[j]-tmp)%MOD;
                    v[j] = (v[j]+tmp)%MOD;
                }
            }
        }

        for(int i=0; i<n; i++) if(v[i] < 0) v[i] += MOD;
        
        if(inv){
            int invn = div(n);
            reverse(v.begin()+1, v.end());
            for(int i=0; i<n; i++) v[i] = (long long)v[i]*invn%MOD;
        }
    }

    template<typename T> vector<T> conv(vector<T> &a, vector<T> &b, int n=0){
        
        if(n == 0) n = a.size()+b.size();

        vector<int> aa(n, 0), bb(n, 0);
        int za = a.size(), zb = b.size();
        for(int i=0; i<za; i++) aa[i] = a[i];
        for(int i=0; i<zb; i++) bb[i] = b[i];

        ntt(aa);
        ntt(bb);

        n = aa.size();
        for(int i=0; i<n; i++) aa[i] = (long long)aa[i]*bb[i]%MOD;

        ntt(aa, 1);
        
        vector<T> c(n, (T)0);
        for(int i=0; i<n; i++) c[i] = aa[i];

        return c;
    }
};

const int P = 998244353;

int main(){

    IOS;
    string sa, sb;
    
    cin >> sa >> sb;
    VI a(sa.size()), b(sb.size());
    for(int i=0; i<a.size(); i++) a[i] = sa[i]-'0';
    for(int i=0; i<b.size(); i++) b[i] = sb[i]-'0';

    NTT<P, 3> ntt(21);
    VI c = ntt.conv(a, b);

    c.resize(c.size()+100, 0);
    for(int i=0; i<c.size()-1; i++){
        c[i+1] += c[i]/10;
        c[i] %= 10;
    }

    while(!c.back()) c.pop_back();
    reverse(all(c));

    for(int i : c) cout << i;
    cout << '\n';

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
8
5

correct output
40

user output
40

Test 2

Verdict: ACCEPTED

input
9
1

correct output
9

user output
9

Test 3

Verdict: ACCEPTED

input
9
5

correct output
45

user output
45

Test 4

Verdict: ACCEPTED

input
2
5

correct output
10

user output
10

Test 5

Verdict: ACCEPTED

input
8
7

correct output
56

user output
56

Test 6

Verdict:

input
48
92

correct output
4416

user output
2436

Test 7

Verdict:

input
1
40

correct output
40

user output
4

Test 8

Verdict:

input
97
74

correct output
7178

user output
3713

Test 9

Verdict:

input
58
8

correct output
464

user output
680

Test 10

Verdict:

input
15
24

correct output
360

user output
2142

Test 11

Verdict: ACCEPTED

input
4
7

correct output
28

user output
28

Test 12

Verdict:

input
906
417

correct output
377802

user output
434826

Test 13

Verdict:

input
778
105

correct output
81690

user output
439377

Test 14

Verdict: ACCEPTED

input
2
989

correct output
1978

user output
1978

Test 15

Verdict:

input
2830
5329

correct output
15081070

user output
3527770

Test 16

Verdict:

input
9
51382

correct output
462438

user output
254835

Test 17

Verdict:

input
25053
71372

correct output
1788082716

user output
957515484

Test 18

Verdict:

input
258180
674616

correct output
174172358880

user output
50459793552

Test 19

Verdict:

input
8821
2

correct output
17642

user output
2576

Test 20

Verdict:

input
1742712
9600618

correct output
16731112196016

user output
17727513260499

Test 21

Verdict:

input
8898606
2936506

correct output
26130809910636

user output
36756170371296

Test 22

Verdict:

input
82670092
60138633

correct output
4971666322864236

user output
977067008732568

Test 23

Verdict:

input
54746871
83822602

correct output
4589025178578342

user output
368421742046310

Test 24

Verdict:

input
477252461
1032684

correct output
492850980435324

user output
798646427272974

Test 25

Verdict:

input
5932935
379

correct output
2248582365

user output
5246800335

Test 26

Verdict:

input
620114
3126641

correct output
1938873857074

user output
602651664538

Test 27

Verdict:

input
452757081
222748761

correct output
100851078826726641

user output
30339602940248388

Test 28

Verdict:

input
689748332
888826746

correct output
613066765490487672

user output
151446711134219568

Test 29

Verdict:

input
111337
25

correct output
2783425

user output
38121772

Test 30

Verdict:

input
809
84435378

correct output
68308220802

user output
79316930784

Test 31

Verdict:

input
9641697369926504411
425970950212942028697061039529...

correct output
410708299033321711216812810174...

user output
475508506941967615302647306694...

Test 32

Verdict:

input
793769623129909085108356241071...

correct output
264404012608186879272715560773...

user output
332385502185573478620928560488...
Truncated

Test 33

Verdict:

input
8539777831492675800
436

correct output
3723343134530806648800

user output
54373704839852112972

Test 34

Verdict:

input
946492187160898604892390431179...

correct output
585982368537725512535970251461...

user output
911060932918447852052459733214...
Truncated

Test 35

Verdict:

input
874046401974324184707688863838...

correct output
174556202198322810668657866310...

user output
280797394760271456911155108394...
Truncated

Test 36

Verdict:

input
168584663428092347854539803060...

correct output
235958453587245776929148968707...

user output
226026772179702414593608255091...
Truncated

Test 37

Verdict:

input
279013912031336395843652482056...

correct output
856375236460411618343887929304...

user output
342748731681184766068847172677...
Truncated

Test 38

Verdict:

input
909594443312661242668561455177...

correct output
801297086685128929836268694647...

user output
675064634515149583350339505746...
Truncated

Test 39

Verdict:

input
521558480102200460144622364590...

correct output
403176935665359352292583479223...

user output
415031249313715226420292338442...

Test 40

Verdict:

input
198766521920629467015839613580...

correct output
197951285207558548760833360414...

user output
540816457348674893217591858834...
Truncated

Test 41

Verdict:

input
388239940637354291806784217812...

correct output
354893636094929851749498258576...

user output
265059682769452752971425110659...
Truncated

Test 42

Verdict:

input
580031950564534684773525167998...

correct output
225288306472433597677862095876...

user output
299355178615788099151757830211...
Truncated

Test 43

Verdict:

input
673497493525004204568833306269...

correct output
104167516519697053781119530996...

user output
250729795549621647507973836240...
Truncated

Test 44

Verdict:

input
583582406474458495157747860432...

correct output
355985267949419682046226194863...

user output
656409484704107465673737942612...
Truncated

Test 45

Verdict:

input
154401310284121033413839709675...

correct output
472687322036571910421947159369...

user output
684551880855619198412276042541...
Truncated

Test 46

Verdict:

input
964784520177212016698
135881607827957154173561484162...

correct output
131096471809203739325264543904...

user output
558957433802059238326638877483...
Truncated

Test 47

Verdict:

input
506417941420848908877158785176...

correct output
124940484872553056181800567857...

user output
375946378747794771792047656801...
Truncated

Test 48

Verdict:

input
278205703909200971326699489015...

correct output
213362541886605761113025837459...

user output
186546018218172588910874627488...
Truncated

Test 49

Verdict:

input
488919747667763730629078434642...

correct output
244261035002054726047225565934...

user output
290888585432523237569756331022...
Truncated

Test 50

Verdict:

input
683013292533355268532590162229...

correct output
271255985219635665074840248062...

user output
970089539319627109733765574239...
Truncated

Test 51

Verdict:

input
701382950383712289025758984281...

correct output
396240397875971182850884660551...

user output
185342160825870521176596464413...
Truncated

Test 52

Verdict:

input
950530137216618089651057517232...

correct output
525100658977646195130452101103...

user output
461106334574223916377103213258...
Truncated

Test 53

Verdict:

input
758180874616256083097058082046...

correct output
612777382638418549100062437996...

user output
208517790521268405231398192181...
Truncated

Test 54

Verdict:

input
282198270649528096385750216226...

correct output
878945962031578099916769892430...

user output
160161102273592084433603776514...
Truncated

Test 55

Verdict:

input
374271236006180996628555027124...

correct output
205927043926518428842129271440...

user output
829712308163009699961882939651...
Truncated

Test 56

Verdict:

input
789860669365068182777748873091...

correct output
369460448033120451265094062370...

user output
386108986627612521339134748682...
Truncated

Test 57

Verdict:

input
826700926013863385104801713448...

correct output
291751287859134397942962144651...

user output
290526395041769391542955140104...
Truncated

Test 58

Verdict:

input
947468718382260248801518078140...

correct output
226868697296935607336651841496...

user output
326114294377864048341279792338...
Truncated

Test 59

Verdict:

input
177252461103268440789803954968...

correct output
111876380249200192763403085310...

user output
327009584607132510757490932669...
Truncated

Test 60

Verdict:

input
393293577943612353036749957226...

correct output
336630505716557163667422969707...

user output
175096140134809123251916296079...
Truncated

Test 61

Verdict:

input
320114112664152374910455416563...

correct output
136407754249269979820422504376...

user output
126944795747018227263993164903...
Truncated

Test 62

Verdict:

input
152757081122748761316522074282...

correct output
107712372482584798763194835348...

user output
594549282825738764813760457136...
Truncated

Test 63

Verdict:

input
889748332988826746683887083103...

correct output
729454517423131565738173030712...

user output
573623433430857305502075385304...
Truncated

Test 64

Verdict:

input
311337350148998951898280698942...

correct output
245742878826375358332482490843...

user output
961045782138500614079543723925...
Truncated

Test 65

Verdict:

input
709744353788876782171034561202...

correct output
198288295923437797210097622398...

user output
810955352287432341335034724689...
Truncated