QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#640027#7789. Outro: True Love WaitsD06TL 717ms28856kbC++142.9kb2024-10-14 01:53:562024-10-14 01:53:56

Judging History

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

  • [2024-10-14 01:53:56]
  • 评测
  • 测评结果:TL
  • 用时:717ms
  • 内存:28856kb
  • [2024-10-14 01:53:56]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int mod=1000000007;
const int inv2=500000004;
const int inv3=333333336;
string s,t;
bitset<1000000>m;
int tot;
int step()
{
	int id=m._Find_first();
	return id/2+1;
}
long long power(long long n,int p)
{
    long long ans=1;
    while(p)
    {
        if(p&1)
        ans=ans*n%mod;
        p>>=1;
        n=n*n%mod;
    }
    return ans;
}
/*
long long power(int n,int p)
{
	if(p==0)
	{
		return 1;
	}
	long long tmp=power(n,p/2);
	if(p%2==1)
	{
		return tmp*tmp%mod*n%mod;
	}
	return tmp*tmp%mod;
}
*/
int calc(int k)
{
	return (power(4,k)-1)*inv3%mod;
}
void shuchu()
{
	bitset<10>w=m.to_ulong();
	cout<<w<<endl;
}
int ask(int len,int k)
{
//	shuchu(m);
//	cout<<len<<" "<<k<<endl;
	if(len<m._Find_first()+1)
	{
		return calc(k); 
	}
	if(!m[len-1])
	{
		return ask(len-1,k);
	}
	if(len==m._Find_first()+1&&step()==k)
	{
		return (calc(len/2+1)*power(2,len%2)-(len%2==0))%mod;
	}
	else if(len==m._Find_first()+1)
	{
		if(k==1)
		{
			if(len%2==0)
			{
				return (calc((len-1)/2+1)*power(2,(len-1)%2)-((len-1)%2==0))%mod*inv2%mod*3%mod+1;
			}
			else
			{
				return calc((len+1)/2)+1;
			}
		}
//		cout<<len-2*(step()-k+1)-(len%2==0)<<" "<<step()<<" "<<len<<" "<<k<<endl;
		m.set(len-2*(step()-k+1)-(len%2==0),1);
		return ask(len,k-1)+1;
	}
	else
	{
		if(len%2==0)
		{
			tot++;
			if(m[len-1-1])
			{
				m[len-1-1]=0;
	//			cout<<calc((len-1)/2+1)*power(2,(len-1)%2)<<endl;
				return (ask(len-1,k)+calc((len-1)/2+1)*power(2,(len-1)%2))%mod;
			}
			else
			{
	//			cout<<calc((len-1)/2+1)*power(2,(len-1)%2)*power(2,1000000005)%mod*3%mod<<endl;
				return (ask(len-1,k)+calc((len-1)/2+1)*power(2,(len-1)%2)*inv2%mod*3%mod)%mod;
			}
		}
//		cout<<calc((len-1)/2+1)*power(2,(len-1)%2)<<endl;
		tot++;
//		cout<<"tot++"<<endl;
		return (ask(len-1,k)+calc((len-1)/2+1)*power(2,(len-1)%2))%mod;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
//	freopen("M.in","r",stdin);
	int T;
	cin>>T;
	while(T--)
	{
		int k;
		cin>>s>>t>>k;
		reverse(s.begin(),s.end());
		reverse(t.begin(),t.end());
		for(int i=max(s.size(),t.size())-1;i>=0;i--)
		{
			if(i<s.size())
			{
		//		cout<<i<<"s!!!s"<<s[i]-'0'<<endl;
				m[i]=m[i]^(s[i]-'0');
		//		cout<<m[i]<<endl;
			}
			if(i<t.size())
			{
		//		cout<<i<<"t!!!t"<<t[i]-'0'<<" "<<t[i]<<endl;
				m[i]=m[i]^(t[i]-'0');
		//		cout<<m[i]<<endl;
			}
		}
	//	shuchu();
	//	m=bitset<1000000>(s)^bitset<1000000>(t); 
		if(m.none())
		{
			cout<<calc(k)-1<<"\n";
		}
		else if(k>step())
		{
			cout<<-1<<"\n";
		}
		else
		{
			cout<<ask(max(s.size(),t.size()),k)-1<<"\n";
		}
//		cout<<tot<<"\n";
	//	m.reset();
		
		for(int i=max(s.size(),t.size())-1;i>=0;i--)
		{
			m[i]=0;
		}
		
	}
//	cout<<(double)clock()/1000<<endl;
	return 0;
}
/*
1
0 11100 2
*/

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3604kb

input:

4
1 10 1
1 10 2
100 0 2
11 11 3

output:

2
-1
9
20

result:

ok 4 number(s): "2 -1 9 20"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

1
0 0 1

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3568kb

input:

100
110111 11111 1
10110 101101 1
11010 111111 1
100110 1 1
10010 11010 1
1100 10111 1
100100 111110 1
101110 101100 1
1011 10110 1
110100 1110 1
11010 11000 1
11110 1000 1
111000 11101 1
110 1001 1
101010 11000 1
10 111110 1
110001 101000 1
1010 1000 1
10101 11 1
111011 11010 1
110001 100000 1
1100...

output:

78
59
69
70
15
38
39
3
32
60
3
29
69
12
45
52
37
3
29
64
22
39
54
69
65
27
33
76
34
18
57
13
81
15
23
70
69
36
18
23
29
42
69
54
6
0
63
3
29
15
10
16
80
24
37
59
71
13
23
31
21
34
23
48
21
47
7
44
42
3
37
75
59
29
55
39
29
28
29
70
55
16
54
47
24
18
79
60
8
26
64
58
32
6
8
37
2
68
42
44

result:

ok 100 numbers

Test #4:

score: 0
Accepted
time: 0ms
memory: 3564kb

input:

100
10011111 111 2
1011101100 1000000100 1
100011111 1001001111 1
1001100101 1100100001 1
10101000 10000100 1
1011110101 100011101 1
110100001 111011010 1
1101001100 1111101101 1
1001101 11011010 1
1101110110 1101011000 1
110011001 1100001111 2
1001111001 1011001111 1
1001110 1101110100 2
1110110100...

output:

295
248
788
431
73
930
144
319
283
76
-1
305
-1
-1
86
-1
312
293
1293
433
1179
0
884
963
1215
576
-1
1132
499
811
864
949
1322
406
526
862
-1
447
1203
1238
873
-1
-1
1131
1108
438
134
359
80
740
1057
752
31
950
1093
1261
650
235
996
876
504
925
1344
450
1010
273
-1
1144
1041
717
-1
164
-1
11
798
419...

result:

ok 100 numbers

Test #5:

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

input:

1000
1010011001 1100000000 1
1111001110 100100011 1
10000001 1110100110 1
1001000010 1111011110 1
11110001 101101110 1
10110001 110010 1
110111100 1111011111 1
1010101010 1111110000 1
11010110 11000110 1
1101101100 10001101 1
1101000110 111100110 3
1101100 10110 1
1001101001 10010001 1
1000110100 11...

output:

633
1267
752
627
629
257
1173
465
21
916
1361
145
1250
1006
155
783
412
684
400
1126
1204
185
298
932
535
246
1094
325
272
-1
-1
389
164
-1
-1
644
436
1271
261
741
351
212
985
426
236
1356
952
1256
1039
911
709
547
1349
142
229
1077
538
48
1089
378
1152
524
218
1161
485
884
751
299
206
268
95
933
76...

result:

ok 1000 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 3576kb

input:

1000
100110100101100101010111110010101010110011100011111101110010010001011001100100000001101110101111101 1110001111001100110000111010010101001111100010101010110110101001000001001000011101000011001110101011 1
11101111001001100011000010001010001011001101011110011011100111011111000000010000110100101001...

output:

218980472
-1
-1
517518581
-1
-1
85094150
666890546
885064041
-1
-1
189310507
730304733
-1
659799430
794266104
-1
-1
-1
760479713
644678967
837810902
535065049
-1
-1
-1
186342775
939519657
-1
257634724
172396207
442878387
-1
495325667
951414912
-1
-1
-1
714507638
-1
525066268
-1
-1
-1
920213221
-1
-1...

result:

ok 1000 numbers

Test #7:

score: 0
Accepted
time: 24ms
memory: 3664kb

input:

1000
1101010010111010000111000000000101000000111101010010010101110011000000111011010000110111000101001101010101110100000111000110110101100001111100010010001000011100100111100100000100101100001111010010000010111101010000000110011100011100100000010111110100000111010010110111000111010000101011011111011...

output:

392697873
-1
-1
-1
337638914
150474497
812988479
14301059
242433325
207160298
-1
345593651
-1
649843860
-1
-1
904010827
-1
505608125
898864826
772130764
5160799
234942297
-1
84958267
-1
-1
-1
-1
732394003
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
522542096
-1
349811717
-1
-1
-1
52557246
-1
850414...

result:

ok 1000 numbers

Test #8:

score: 0
Accepted
time: 113ms
memory: 3708kb

input:

1000
1101111111110110100111000010100010011111010100000100100110011010110111110100000100101100110011111011101001001001000000010111010001111100101101111000010011010010111110111000111111100010100011100001010010110011001101110010110011010010110000101010001000101000011001111101001100011011011100011010101...

output:

800723017
736241483
-1
214103223
-1
560328139
-1
-1
-1
-1
-1
-1
627204069
-1
-1
-1
59957998
527911577
364243222
640552596
40541566
561771248
863747051
147600304
-1
-1
665706424
905996351
683049809
136472343
387837991
-1
-1
728303101
-1
579656230
916322837
745095574
-1
-1
999380075
-1
-1
-1
-1
-1
-1
...

result:

ok 1000 numbers

Test #9:

score: 0
Accepted
time: 197ms
memory: 4068kb

input:

1000
0 10000010011110111011010111111011001101110001001001100001110011100100011111000001001111000010110101100001101111111110110100010000100001001101001111100000111100001101110101100001101111110001001101100000001010110110101100111110100010010111101011000111111010011110001111001111001111001101011000000...

output:

58376942
300766824
414156121
-1
-1
-1
-1
88479909
720713306
306938941
-1
423848104
440743683
478829933
-1
462661101
889252617
-1
-1
-1
964856420
-1
-1
-1
-1
-1
82855520
-1
-1
3110379
686092492
931632750
-1
-1
-1
-1
940831778
488427141
-1
-1
661417338
116153160
-1
425604704
458005044
-1
159078900
921...

result:

ok 1000 numbers

Test #10:

score: 0
Accepted
time: 320ms
memory: 6048kb

input:

100
11110010010001000100010111001111000100110100101010111000100000110110111001101100000101101000111011101010011111011011101000100000101111010011011100101111001010101010000110000100100010010011011100110101100110000001010011110011010010000110001010001111100110101101110011000111101010010111110101001000...

output:

462011783
521025699
287271357
570655586
456767304
329006899
238484791
947067110
-1
321339742
892341001
341864209
957855854
921186081
566465880
771098276
874776895
342528323
614989005
253849992
494496838
786564559
531120498
191845391
-1
848544140
442763668
154392835
320194212
-1
942226479
835067908
7...

result:

ok 100 numbers

Test #11:

score: 0
Accepted
time: 270ms
memory: 28856kb

input:

10
100010011010101111000101100000111000000010001111111000000100000001001011110011100000001010101110010001111100111000001110011001000110000101001100110100100001000001010001001111001100100001001000001001101000001100010001011111011111111011111111011000100100001000011111000100000001000111000111110001100...

output:

-1
-1
274714929
384784303
207381248
-1
928083397
-1
651865477
38209655

result:

ok 10 numbers

Test #12:

score: 0
Accepted
time: 109ms
memory: 3576kb

input:

100000
101001001101010000011110011 110100000001100000000011001010100111000010010000001100011100000010010 1
1001111000001110111010001011001110001011010000110000011100000100110000 111001011001001110101000010100 1
1111000100101000001011111100010100010101010100110100010110010110000 110101000010011100001...

output:

632145185
400205347
234734936
-1
843239926
943197772
-1
33248281
343066805
879147467
113127988
872252209
801735279
-1
-1
-1
375307518
-1
-1
-1
723430324
599663758
72686015
625897124
600699345
876415884
-1
185570509
296533591
183514003
-1
223858775
842750716
294113333
889586630
-1
36491106
725331632
...

result:

ok 100000 numbers

Test #13:

score: 0
Accepted
time: 717ms
memory: 3804kb

input:

100000
10011001111000111101010100011110000010100001011111 10011001111000111101010100011110000010100001011111 1000000000
10101010000110001000111000000110011001011111111000 10101010000110001000111000000110011001011111111000 1000000000
1111101101110001000000111111001011011110010011100 11111011011100010...

output:

922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
922607427
980651861
922607427
922607427
980651861
980651861
922607427
922607427
922607427
922607427
980651861
922607427
922607427
922607427
922607427
922607427
922607427
...

result:

ok 100000 numbers

Test #14:

score: 0
Accepted
time: 45ms
memory: 3604kb

input:

500
10011010000010100110101110101011110111101010101001101101011001010101111001010100011100010001011100010011110001011011110000111101010111001110001110111010011010011110011001011101101001010101101010011010110111010100100011010000100100111111001101011001010001001000100001111010100001000010111111100111...

output:

737181407
587799254
62639937
369541795
165431934
638785794
330003775
183504314
753186790
752661557
353170674
78163393
388359006
338956423
118823706
931439024
135485354
866094534
902395498
726869373
429189890
397082779
213862647
441185814
37451351
228980683
415165982
940979772
780120174
582640574
621...

result:

ok 500 numbers

Test #15:

score: 0
Accepted
time: 42ms
memory: 3764kb

input:

50
111111111010110001111000010011011110000011100111000001011101000000111011010000110111110111001100010000100000101011010100000110010001001100001011111010011010000101100010101010110110111001000001000001110110001011000001101001000101010011010111101110001011101000101110010000100011011111011011000000010...

output:

216724393
525172574
531318307
769006200
454200742
933042832
229683494
23793649
336908
977859828
517074248
657225951
659326266
257755702
749478964
719766258
869590889
959530147
96782029
127856939
399369359
35448127
601305144
213447708
52795378
888917215
877405008
865749370
144851134
245480381
3659557...

result:

ok 50 numbers

Test #16:

score: 0
Accepted
time: 39ms
memory: 5652kb

input:

5
1100111110010101000000011110001101111000111000110010001001000001010010101110000010011010100000100001100000101011111100110110010011010101001000001111101111101111100001111110101100000011100011100101001000000101010001000011001010101111001000011001010110111011011111011100111011101000110011110010000010...

output:

46253012
893945073
220404880
170464103
634061366

result:

ok 5 number(s): "46253012 893945073 220404880 170464103 634061366"

Test #17:

score: 0
Accepted
time: 43ms
memory: 3676kb

input:

10000
110101000010101000100101010001010001110101111010001101011101000000111000100011000010001010011100111011010100110000011011011101010101111010010111100101110000100001100001111001000110100001100000101100101001110110010001100100011001110001100110001101001100010011110001110001100110111110000110101000...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 10000 numbers

Test #18:

score: 0
Accepted
time: 59ms
memory: 3584kb

input:

10000
110100011101011001010010011010111100011011001111100111011110000011000010011000111001111100111100011101101011111010010010000001110100001110111111001011011010110101111111110110010011011111011001010000000101101010101000111000100011110101001001000101100011111000000101000111100001100001101111011101...

output:

-1
-1
-1
975580244
-1
-1
-1
407637528
-1
191560321
-1
870142941
-1
-1
-1
908346145
-1
-1
-1
-1
-1
509453746
518385286
635367520
339288320
118038708
673585209
555685245
863104117
-1
791258488
-1
-1
-1
-1
414789703
-1
-1
-1
750165048
-1
911134454
962823621
-1
117106024
-1
792133485
-1
-1
-1
-1
2883755...

result:

ok 10000 numbers

Test #19:

score: 0
Accepted
time: 97ms
memory: 3760kb

input:

1000
1101011000001010001010100111000111010111100110000110100010000101110000001111011100101100100111001111100101110111011000100011001010100011000010001100111100111000000111101001111011111110101100111111001001000001110101110111010101010101111000110100011000000110000100010110011110100100110100101000011...

output:

737009406
441199288
-1
760175628
-1
530864585
261515587
-1
397759642
-1
-1
-1
-1
-1
476880329
827469011
-1
675958597
-1
-1
-1
-1
-1
995934206
974244882
930782058
755407809
631211150
-1
830018188
608999270
293151731
-1
-1
-1
-1
-1
245621663
-1
808566107
780955703
-1
492640632
-1
-1
405939631
-1
-1
65...

result:

ok 1000 numbers

Test #20:

score: 0
Accepted
time: 414ms
memory: 4716kb

input:

100
11111001100011000000110111000111111110101001010101101101000111100001010011000101101110101100010001001101101000001110101110000000101110000010110010110100011001101010010111000011001000010101001000010000010001010001101011111011000100101111111010110010111001100001011011101001000101100011110100011100...

output:

-1
496671328
504013803
575643443
-1
-1
746207713
108678906
935425195
253484739
-1
848071310
422461164
579952939
-1
-1
970429148
940756416
355691502
-1
-1
-1
405826684
887757623
-1
804641341
-1
757761167
-1
108616384
489947605
-1
853796193
925351824
-1
-1
418962674
-1
252735227
-1
154936101
527940179...

result:

ok 100 numbers

Test #21:

score: 0
Accepted
time: 167ms
memory: 6024kb

input:

100
10010101110010000011010001000011100000001011100101000000010000100110010101011000011111010010110001110100001010010100101011110111101010010001101000011101100101010110111011001010000001101110101100111011101110100101000000100010111111001001000000011100010011101011111011010100101001101011001011111111...

output:

-1
-1
273660097
-1
888526136
843009269
-1
-1
862332310
68649756
-1
-1
-1
-1
-1
599209928
-1
-1
-1
429994015
-1
-1
-1
-1
-1
-1
207093044
-1
-1
-1
-1
-1
-1
-1
-1
442545582
-1
-1
415788911
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
469427670
-1
583667771
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
311210823
465482108
62752608...

result:

ok 100 numbers

Test #22:

score: -100
Time Limit Exceeded

input:

10
111100101001100001000000010101101000010110000100101111100110100101100010110110100110001111001111100000011000110110001001101110111110011010000001001000110100101100000010011101111010011111101011001001100110011111000001101100110100101011101001000101010000100110001010010111111000000101011101101110010...

output:


result: