QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#799217#6214. 无界单词Grain_Depot08100 ✓1ms3976kbC++141.0kb2024-12-05 07:14:072024-12-05 07:14:08

Judging History

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

  • [2024-12-05 07:14:08]
  • 评测
  • 测评结果:100
  • 用时:1ms
  • 内存:3976kb
  • [2024-12-05 07:14:07]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define N 65
typedef unsigned long long ull;
ull t,n,k,f[N],g[N],nxt[N];
char s[N];
void kmp(int p){
	if(p==1)return;
	int j=nxt[p-1];
	while(j&&s[j+1]!=s[p])j=nxt[j];
	if(s[j+1]==s[p])++j;
	nxt[p]=j;
}
ull calc(int p){
	ull w;
	for(int i=1;i<=n;++i){
		if(i<=p){
			g[i]=nxt[i]?0:1;
		}else{
			g[i]=1ull<<i-p;
			for(int j=1;j<=i/2;++j){
				if(i-j+1<=p){
					w=1;
					for(int k=i-j+1,l=1;k<=p;++k,++l)
						if(s[k]!=s[l]){w=0;break;}
					g[i]-=w*g[j];
				}else if(j<=p){
					g[i]-=(1ull<<i-p-j)*g[j];
				}else{
					g[i]-=(1ull<<i-j*2)*g[j];
				}
			}
		}
	}
	return g[n];
}
int main(){
	ull w;
	scanf("%llu",&t);
	f[0]=1;
	for(int i=1;i<=64;++i){
		if(i&1)f[i]=f[i-1]*2;
		else f[i]=f[i-1]*2-f[i/2];
	}
	while(t--){
		scanf("%llu%llu",&n,&k);
		for(int i=1;i<=n;++i){
			s[i]='a';
			kmp(i);
			w=calc(i);
			if(k>w){
				s[i]='b';
				kmp(i);
				k-=w;
			}
		}
		s[n+1]='\0';
		printf("%llu\n%s\n",f[n],s+1);
	}
	return 0;
}

详细


Pretests


Final Tests

Test #1:

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

input:

5
10 207
10 119
9 131
10 160
10 94

output:

284
bbabaabaaa
284
ababaababb
148
bbbabbaba
284
babaabbbaa
284
aabbbabbab

result:

ok 10 lines

Test #2:

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

input:

5
20 204400
18 29002
18 37602
19 124074
19 16406

output:

281076
bbabaababbabababaaba
70340
ababaaaabbbbbbabbb
70340
baabbbabbbbaaabaaa
140680
bbbabbbababaabaabba
140680
aaabaaabaabaaaabbab

result:

ok 10 lines

Test #3:

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

input:

5
24 1756170
24 2954809
22 1028107
22 731494
22 632867

output:

4493828
abaababababbbaababaaabbb
4493828
bbaaaababaabbabababababa
1123736
bbbbaabbbabbbbbbaaabba
1123736
bbaaaaaabbabbaabbaaaba
1123736
bababaaaaababbaabbaaaa

result:

ok 10 lines

Test #4:

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

input:

5
27 34554458
26 7853662
28 34685327
27 5811209
26 7970283

output:

35946160
bbbbbababaabaabbbababbbaaba
17973080
abababbbbbabbbbaaabbbbbabb
71887896
abbababbbaaabaaaabbababbbbbb
35946160
aaabbaaaabbbbbbabbabaabbbbb
17973080
ababbaabbbbaabbaaaababbbbb

result:

ok 10 lines

Test #5:

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

input:

5
31 347955619
30 64115137
30 244757467
32 630000809
32 1026272586

output:

575085472
babbabaaaaabbbbaaabbaabaabbaaaa
287542736
aabaaabbabbababbbabbabaaababab
287542736
bbbabaabbababaabbababbbaaababa
1150153322
babaaabbabaaabaaaabbbaababbbbbaa
1150153322
bbbbaaaaabaaabaaabaaaabbbbabbaaa

result:

ok 10 lines

Test #6:

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

input:

5
56 11418652155951284
57 35048628878793291
56 10547885091516138
56 14334231976623064
56 6626671462199870

output:

19296075493006760
babbaaaaaabaabaabbbbaabbababbabbaabbaaaabaaabbbbbabbbaaa
38592150986013520
bbbbaabababbbaabaababbbaaaababbbabaababaaababaababbbabaaa
19296075493006760
babaaababbbaaabbaaaaababbbbaaaaabbaaabbaaabbaaabababbbaa
19296075493006760
bbababbaaaababaabaaaababaaaabababaaaabaaaaababbbaabababa...

result:

ok 10 lines

Test #7:

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

input:

5
63 2464980184316343454
63 990137394745283831
61 87621639090453995
62 579608892494436922
62 840155758238615836

output:

2469897655053527104
bbbbbbbbbabbbabaaaaababbaabbbabababaababaababaababababbbbbbabba
2469897655053527104
abaabbabbaabbbabbbabbabaaabaaaaaaaaaabbbbaaabbaaababbbaabbbbbbb
617474414050924512
aaabababaabbaababbabbbbaaaabbbbbabaababaaaaabbbbbbbabbaabbaab
1234948827526763552
abbaabaaabaaabaaabaaabbabaaaaab...

result:

ok 10 lines

Test #8:

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

input:

5
63 560160613792005859
63 1571998298795922483
62 1104343094220952078
62 45077520445927852
62 276453343206805242

output:

2469897655053527104
aabaabaaaabaaaabaaaabbbbaabbabaabbbbaabbababbbabaabaababbbbabab
2469897655053527104
babbbbaabbabbbbbabbaababbbabbbbaaabbbbbababbabbbbabaabbabbabaaa
1234948827526763552
bbbbaaaabaabaabaaabbaaabbbaaaaabbbbaaabbabbbabbabbbaaababbaaaa
1234948827526763552
aaaaababaaabbabbaabbbbbaaabbb...

result:

ok 10 lines

Test #9:

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

input:

5
62 487743272421550773
63 1106478100175603425
62 515718557008469245
64 2171702614481334094
63 678044720533572037

output:

1234948827526763552
abaababbbbbaaaabbbabababbbbbbbabbaaabbbaaabbbabbaaabbaabbbabbb
2469897655053527104
ababbabbababaabbbabaaabbaabababbbabbaaaaabbbbabbaaaaabbaaaaaabb
1234948827526763552
ababaabaabbbaabbaaaaaaaaabbabaaaababbbaabbbabbbbaaaabaabaaaabb
4939795308956900886
ababbaaababbaaabbbabaaabaabbbb...

result:

ok 10 lines

Test #10:

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

input:

5
62 636652242833777812
62 835043011717080893
64 2611442093333570988
63 991429299066879745
64 1989144564346741540

output:

1234948827526763552
baabaabbababbbbbaabaaaabaabaababbababaaababababbbbaaabbabbbaaa
1234948827526763552
bbaaabbbababaaababbabbbbbaabbbabaabbbbbaababbbbababbabaaabaaba
4939795308956900886
baabbabababaaaabbaabbaaaabbbbaaaabaabbabbaabababbaaaaabbbbaabaaa
2469897655053527104
abaabbabbbaaabababbaababbaabb...

result:

ok 10 lines