QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#564834#7876. Cyclic SubstringsBird#AC ✓128ms314460kbC++171.3kb2024-09-15 15:17:582024-09-15 15:17:59

Judging History

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

  • [2024-09-15 15:17:59]
  • 评测
  • 测评结果:AC
  • 用时:128ms
  • 内存:314460kb
  • [2024-09-15 15:17:58]
  • 提交

answer

#include<bits/stdc++.h>
#define N 3000000
using namespace std;
const int mod=998244353;
inline int fmod(const int &x) {return x<mod?x:x-mod;}
inline int qmod(const int &x) {return x<0?x+mod:x;}
inline void add(int &x,const int &y) {x=fmod(x+y);}
inline void sub(int &x,const int &y) {x=qmod(x-y);}
inline int quick_pow(int x,int b)
{
	int ret=1;
	for(;b;b>>=1,x=1ll*x*x%mod)
		if(b&1) ret=1ll*ret*x%mod;
	return ret;
}
inline int inv(int x) {return quick_pow(x,mod-2);}
struct node
{
	int trans[10],fail,num,len;
}t[N*2+5];
int n,ans,cnt,last=1;
char s[N*2+5];
inline void insert(int p)
{
	while(s[p]!=s[p-t[last].len-1]) last=t[last].fail;
	int ch=s[p]^'0';
	if(t[last].trans[ch]) last=t[last].trans[ch];
	else
	{
		t[last].trans[ch]=++cnt;
		t[cnt].len=t[last].len+2;
		last=t[last].fail;
		while(last && s[p]!=s[p-t[last].len-1]) last=t[last].fail;
		t[cnt].fail=t[last].trans[ch];
		last=cnt;
	}
	if(p>=n) ++t[last].num;
}
int main()
{
	scanf("%d",&n);
	scanf("%s",s+1);
	cnt=2,t[1].len=-1,t[2].fail=1;
	for(int i=0;i<10;++i) t[0].trans[i]=2;
	for(int i=1;i<n;++i) s[i+n]=s[i];
	for(int i=1;i<2*n;++i) insert(i);
	for(int i=cnt;i>1;--i)
	{
		t[t[i].fail].num+=t[i].num;
		if(t[i].len<=n) add(ans,1ll*t[i].num*t[i].num%mod*t[i].len%mod);
	}
	printf("%d\n",ans);
	return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 5956kb

input:

5
01010

output:

39

result:

ok 1 number(s): "39"

Test #2:

score: 0
Accepted
time: 1ms
memory: 5976kb

input:

8
66776677

output:

192

result:

ok 1 number(s): "192"

Test #3:

score: 0
Accepted
time: 1ms
memory: 5960kb

input:

1
1

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 1ms
memory: 6016kb

input:

2
22

output:

12

result:

ok 1 number(s): "12"

Test #5:

score: 0
Accepted
time: 1ms
memory: 5844kb

input:

2
21

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: 0
Accepted
time: 1ms
memory: 6012kb

input:

3
233

output:

10

result:

ok 1 number(s): "10"

Test #7:

score: 0
Accepted
time: 1ms
memory: 6020kb

input:

3
666

output:

54

result:

ok 1 number(s): "54"

Test #8:

score: 0
Accepted
time: 32ms
memory: 110780kb

input:

1000000
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333...

output:

496166704

result:

ok 1 number(s): "496166704"

Test #9:

score: 0
Accepted
time: 96ms
memory: 314380kb

input:

3000000
2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222...

output:

890701718

result:

ok 1 number(s): "890701718"

Test #10:

score: 0
Accepted
time: 98ms
memory: 149052kb

input:

3000000
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999...

output:

224009870

result:

ok 1 number(s): "224009870"

Test #11:

score: 0
Accepted
time: 95ms
memory: 314416kb

input:

3000000
8989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989...

output:

51985943

result:

ok 1 number(s): "51985943"

Test #12:

score: 0
Accepted
time: 55ms
memory: 314460kb

input:

3000000
1911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911...

output:

355676465

result:

ok 1 number(s): "355676465"

Test #13:

score: 0
Accepted
time: 111ms
memory: 278000kb

input:

3000000
7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777...

output:

788510374

result:

ok 1 number(s): "788510374"

Test #14:

score: 0
Accepted
time: 128ms
memory: 288556kb

input:

3000000
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555...

output:

691884476

result:

ok 1 number(s): "691884476"

Test #15:

score: 0
Accepted
time: 72ms
memory: 162608kb

input:

3000000
0990990909909909099090990990909909909099090990990909909099099090990990909909099099090990990909909099099090990909909909099099090990909909909099090990990909909909099090990990909909909099090990990909909099099090990990909909099099090990990909909099099090990909909909099099090990909909909099090990...

output:

701050848

result:

ok 1 number(s): "701050848"

Test #16:

score: 0
Accepted
time: 36ms
memory: 56980kb

input:

3000000
2772772727727727277272772772727727727277272772772727727277277272772772727727277277272772772727727277277272772727727727277277272772727727727277272772772727727727277272772772727727727277272772772727727277277272772772727727277277272772772727727277277272772727727727277277272772727727727277272772...

output:

486861605

result:

ok 1 number(s): "486861605"

Test #17:

score: 0
Accepted
time: 71ms
memory: 267164kb

input:

3000000
4554554545545545455454554554545545545455454554554545545455455454554554545545455455454554554545545455455454554545545545455455454554545545545455454554554545545545455454554554545545545455454554554545545455455454554554545545455455454554554545545455455454554545545545455455454554545545545455454554...

output:

450625621

result:

ok 1 number(s): "450625621"

Test #18:

score: 0
Accepted
time: 68ms
memory: 260540kb

input:

3000000
1181811811818118181181181811818118118181181181811818118118181181181811818118118181181811811818118118181181811811818118181181181811811818118181181181811811818118181181181811818118118181181181811818118118181181181811818118118181181811811818118118181181811811818118181181181811811818118181181181...

output:

649551870

result:

ok 1 number(s): "649551870"

Extra Test:

score: 0
Extra Test Passed