QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#276699#6234. 动物园SoyTony100 ✓44ms12508kbC++141.3kb2023-12-06 09:42:192023-12-06 09:42:20

Judging History

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

  • [2023-12-06 09:42:20]
  • 评测
  • 测评结果:100
  • 用时:44ms
  • 内存:12508kb
  • [2023-12-06 09:42:19]
  • 提交

answer

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<queue>
#include<stack>
#include<vector>
#include<map>
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
const int maxn=2e6+10;
const int maxm=1e6+10;
const ull mod=1e9+7;
const ull base1=131;
const ull base2=19660813;
const ll maxxn=0x7ffffff;
const ll minxn=-0x7ffffff;
const db inf=1e13;
inline ll read(){
    ll x=0,w=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
    while(c<='9'&&c>='0'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
    return x*w;
}
int t;
char s[maxn];
int len;
int nxt[maxn],cnt[maxn];
ll ans;
inline void get_nxt(){
    for(int i=2,j=0;i<=len;i++){
        while(j&&s[i]!=s[j+1]) j=nxt[j];
        if(s[i]==s[j+1]) j++;
        nxt[i]=j;
        cnt[i]=cnt[j]+1;
    }
}
inline void get_ans(){
    for(int i=2,j=0;i<=len;i++){
        while(j&&s[i]!=s[j+1]) j=nxt[j];
        if(s[i]==s[j+1])j++;
        while((j<<1)>i) j=nxt[j];
        ans=(ans*(ll)(cnt[j]+1))%mod;
    }
}
int main(){
    scanf("%d",&t);
    while(t--){
        ans=1;
        nxt[1]=0,cnt[1]=1;
        scanf("%s",s+1);
        len=strlen(s+1);
        get_nxt();
        get_ans();
        printf("%lld\n",ans);
    }
    return 0;
}

详细

Test #1:

score: 10
Accepted
time: 0ms
memory: 3724kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxpuvf
abababababababababababababababababababababababdgcd
abcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbafmlqh
abacababacababacababacababacababacababacababadjyxq
aabaacaabaacaabaacaabaacaabaacaabaacaabaacaabjtaxw

output:

592345761
371390093
121623872
675691877
481106999

result:

ok 5 number(s): "592345761 371390093 121623872 675691877 481106999"

Test #2:

score: 10
Accepted
time: 0ms
memory: 3720kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavtgynkaevpdhsdwswilx
ababababababababababababababababababababababababababababababababababababababababababababababababa...

output:

469770619
76547694
933305750
902388437
803348921

result:

ok 5 number(s): "469770619 76547694 933305750 902388437 803348921"

Test #3:

score: 10
Accepted
time: 1ms
memory: 3832kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbwqryehhjfnlhglcnn
ababababababababababababababababababababababababababababababababababababababababababababababababa...

output:

734885313
42387799
866611493
737798559
606697835

result:

ok 5 number(s): "734885313 42387799 866611493 737798559 606697835"

Test #4:

score: 10
Accepted
time: 1ms
memory: 3944kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

256900524
822524261
413461597
106784584
900200874

result:

ok 5 number(s): "256900524 822524261 413461597 106784584 900200874"

Test #5:

score: 10
Accepted
time: 1ms
memory: 3708kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

338653171
215976943
353365401
126668510
374446639

result:

ok 5 number(s): "338653171 215976943 353365401 126668510 374446639"

Test #6:

score: 10
Accepted
time: 2ms
memory: 4508kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

121054060
135829705
586084763
774583391
672914918

result:

ok 5 number(s): "121054060 135829705 586084763 774583391 672914918"

Test #7:

score: 10
Accepted
time: 5ms
memory: 5404kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

608896507
705745581
866882032
907283717
280168955

result:

ok 5 number(s): "608896507 705745581 866882032 907283717 280168955"

Test #8:

score: 10
Accepted
time: 18ms
memory: 8112kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

757739184
436599146
408735068
62286478
824797798

result:

ok 5 number(s): "757739184 436599146 408735068 62286478 824797798"

Test #9:

score: 10
Accepted
time: 37ms
memory: 12420kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

359993524
770772317
946742907
673664964
798002419

result:

ok 5 number(s): "359993524 770772317 946742907 673664964 798002419"

Test #10:

score: 10
Accepted
time: 44ms
memory: 12508kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

237665674
899763767
416501680
103496894
979807695

result:

ok 5 number(s): "237665674 899763767 416501680 103496894 979807695"

Extra Test:

score: 0
Extra Test Passed