UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#207735#3768. 前缀和one_zero_four_zero1001088ms1196kbC++111.3kb2024-07-30 18:26:132024-07-30 20:04:22

answer

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;

struct Matrix{
	long long val[2][2];
};

int T;
long long n, k, temp;
long long mod = 998244353;

Matrix mul(Matrix &a, Matrix &b){
	Matrix res;
	int n = 2, m = 2, p = 2;
	for(int i = 0; i < n; i ++){
		for (int j = 0; j < m; j ++){
			res.val[i][j] = 0;
			for (int k = 0; k < p; k ++){
				res.val[i][j] += 1LL * a.val[i][k] * b.val[k][j];
				res.val[i][j] %= mod;
			}
		}
	}
	return res;
}

Matrix qpow(Matrix a, long long b){
	Matrix res;
	int n = 2;
	for (int i = 0; i < n; i ++){
		for (int j = 0; j < n; j ++){
			if (i == j) res.val[i][j] = 1;
			else res.val[i][j] = 0;
		}
	}
	while (b){
		if (b & 1){
			res = mul(res, a);
		}
		b >>= 1;
		a = mul(a, a);
	}
	return res;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("../data.in","r",stdin);
    freopen("../data.out","w",stdout);
#endif

	scanf("%d", &T);
	while (T --){
		scanf("%lld %lld %lld", &n, &k, &temp);
		if (n == 1){
			printf("%lld\n", temp);
			continue;
		}else if (n == 2){
			printf("%lld\n", temp + k);
			continue;
		}
		Matrix cur;
		cur.val[0][0] = cur.val[0][1] = cur.val[1][0] = 1;
		cur.val[1][1] = 2;
		cur = qpow(cur, n - 2);
		printf("%lld\n", (cur.val[0][0] * (temp + k) + cur.val[0][1] * (temp + temp + k)) % mod);
	}

    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 1ms
memory: 1196kb

input:

10
999999999999999986 0 0
999999999999999991 0 0
999999999999999986 0 0
999999999999999990 0 0
99999...

output:

0
0
0
0
0
0
0
0
0
0

result:

ok 10 tokens

Test #2:

score: 5
Accepted
time: 0ms
memory: 1192kb

input:

10
27 394502328 704811141
47 510615886 836016431
16 732949912 873777233
79 224767945 584300306
53 30...

output:

160618586
476183477
214301529
414736331
938410338
82327142
869636405
823074181
422516300
448110017

result:

ok 10 tokens

Test #3:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
29 908698706 656415656
73 340081904 666753583
49 120165406 827255677
97 263886512 115978477
82 66...

output:

160726921
638373664
232231434
871012536
815009338
728544551
50311973
777278980
408066846
558124020

result:

ok 10 tokens

Test #4:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
24 815392212 158893485
20 106120120 720966485
92 648620121 971073137
62 498389918 955366970
82 26...

output:

741412002
353232419
34176144
82618274
976902741
715176801
432908882
726507952
708781305
404405255

result:

ok 10 tokens

Test #5:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
70 732781470 451862750
92 798448019 55096155
12 15503873 809457172
14 40178736 938171637
24 46560...

output:

515697521
557889800
512673707
477751970
987771721
567871458
232309233
89218141
795002894
97446047

result:

ok 10 tokens

Test #6:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
90861 712228743 749715339
95966 781209778 254301776
98144 170363142 307595582
91210 416894520 638...

output:

292485125
850171336
715786758
176835506
175415901
868198851
713190399
720535252
477887669
297230688

result:

ok 10 tokens

Test #7:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
96965 61379038 717756665
92445 534127283 810781
91661 715004088 386864844
96077 998191859 7505735...

output:

156264360
863310397
81277953
397897589
201490186
141245808
908220821
563550625
715992949
661738617

result:

ok 10 tokens

Test #8:

score: 5
Accepted
time: 0ms
memory: 1188kb

input:

10
99933 66908597 322574074
91563 578926670 893590152
99169 236501165 765826017
92515 447113057 5702...

output:

686087351
58309551
974352798
610094900
957106431
163643067
624245753
241163529
797689675
381828044

result:

ok 10 tokens

Test #9:

score: 5
Accepted
time: 0ms
memory: 1192kb

input:

10
98828 858750825 240386766
97500 773682411 656804902
95454 384008018 86113615
91531 665213365 2454...

output:

667110960
546827786
290618289
930702000
248338295
547142281
741290046
566334453
948532487
497944652

result:

ok 10 tokens

Test #10:

score: 5
Accepted
time: 0ms
memory: 1192kb

input:

10
93993 886800232 31886870
96268 670777364 750304002
98194 744064661 661110190
96013 817065125 9793...

output:

248811671
155899040
165284489
657313874
709550487
730945895
400758785
550263902
184462463
808202166

result:

ok 10 tokens

Test #11:

score: 5
Accepted
time: 112ms
memory: 1192kb

input:

10000
948988045411931137 751774918 773912726
891963022064669013 83439223 789646374
89051487168077280...

output:

785992168
313848750
235996494
227454577
741354002
218864722
938425671
552730236
761659241
292493851
...

result:

ok 10000 tokens

Test #12:

score: 5
Accepted
time: 121ms
memory: 1188kb

input:

10000
968968049383870965 470248529 961624741
860673561734227447 711687580 118322830
9466678457088250...

output:

729956199
138123590
161870128
953945742
781767611
799768381
60045928
319331437
797215528
551833902
7...

result:

ok 10000 tokens

Test #13:

score: 5
Accepted
time: 135ms
memory: 1188kb

input:

10000
996210840763184150 379435044 46240715
957009670203095182 588621962 32413727
856934457131434374...

output:

310767600
494132439
538321141
225470957
540003477
282468210
23756325
469909035
969988279
393290109
8...

result:

ok 10000 tokens

Test #14:

score: 5
Accepted
time: 142ms
memory: 1192kb

input:

10000
970160076699975721 930768296 715181844
830949224459356803 149622331 309970800
9633604039243290...

output:

911032544
79171930
416298777
431113078
969154296
70994303
50903354
522899447
730731878
200341098
225...

result:

ok 10000 tokens

Test #15:

score: 5
Accepted
time: 135ms
memory: 1188kb

input:

10000
827399062500306535 33823512 734207105
879991131082945309 912461337 202773779
85164585824309648...

output:

601242493
789072308
707319827
521247231
306993447
566873061
914382254
271684511
298413011
243752100
...

result:

ok 10000 tokens

Test #16:

score: 5
Accepted
time: 93ms
memory: 1188kb

input:

10000
983908774640419308 982881132 284763245
801568586504883055 349860149 784194606
8609838332297830...

output:

633478384
103794889
199094092
351805716
553385055
750344701
994135993
976650811
353338344
287684713
...

result:

ok 10000 tokens

Test #17:

score: 5
Accepted
time: 89ms
memory: 1188kb

input:

10000
956266530657999088 230426943 322792594
865462860372890442 282800560 437826068
8094928333904686...

output:

309593356
914778841
783405533
781603906
40240827
129200969
654363281
364282446
516066948
596603515
5...

result:

ok 10000 tokens

Test #18:

score: 5
Accepted
time: 84ms
memory: 1188kb

input:

10000
868728608212628642 901844081 77140512
891643586872337125 836835987 606467274
85304317438290743...

output:

634718867
777442571
718892236
474370428
277971334
204179007
778820918
298571673
268095331
232597253
...

result:

ok 10000 tokens

Test #19:

score: 5
Accepted
time: 91ms
memory: 1188kb

input:

10000
852634689738822825 549739895 925465063
939009093749329366 27841760 979946868
87324086040186925...

output:

221764219
928798241
203638368
785150239
500009117
206266032
954050869
819652458
29668451
109393173
7...

result:

ok 10000 tokens

Test #20:

score: 5
Accepted
time: 85ms
memory: 1188kb

input:

10000
915194648289131487 592352670 609557926
897573010199961785 470530638 950622317
9272047252782130...

output:

69870913
744240613
97734943
916935284
994957761
480078547
782165495
840835673
802288286
144223224
92...

result:

ok 10000 tokens