QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#243281#7746. Go go Baron Bunny!QingyuAC ✓35ms35084kbC++1.6kb2023-11-08 00:14:552023-11-08 00:14:56

Judging History

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

  • [2023-11-08 00:14:56]
  • 评测
  • 测评结果:AC
  • 用时:35ms
  • 内存:35084kb
  • [2023-11-08 00:14:55]
  • 提交

answer

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<vector>
#include<numeric>
#include<cmath>
#include<array>
#include<map>
#include<set>
#include<queue>
using namespace std;
#define ll long long
#define db double
#define ge getchar
#define pun putchar('\n')
#define pu putchar
#define puk putchar(' ')
#define pb push_back
#define hl '\n'
typedef vector<int> vint;
typedef array<int,2> pii;
const int nn=2e6+6,p=998244353,ny2=p-p/2;
ll n,k,t;

int jc[nn],ny[nn],jcn[nn],ne[nn];
int sign(int k){if(k&1)return p-1;else return 1;}
int binom(int n,int k){if(k<0)return 0;
	if(n>=0){if(k>n)return 0;
		return (ll)jc[n]*jcn[k]%p*jcn[n-k]%p;
	}return (ll)sign(k)*binom(k-n-1,k)%p;
}

int main(){
	scanf("%lld%lld%lld",&n,&k,&t);
	ll N=1,s=0;
	while(s+N<n)s+=N,N++;
	ll r=n-s; //>0
	ll T=__gcd((ll)N,t);
	
	if(k==N||k==N-1){

		jc[0]=jc[1]=ny[1]=jcn[0]=jcn[1]=1;
		for(int i=2;i<nn;i++)jc[i]=(ll)jc[i-1]*i%p,ny[i]=(ll)(p-p/i)*ny[p%i]%p,jcn[i]=(ll)ny[i]*jcn[i-1]%p;
		ne[0]=1;for(int i=1;i<nn;i++)ne[i]=(ll)ne[i-1]*ny2%p;

		int ans=0;
		ll K=N/T;
		ll y=r/K;
			
		if(r%K==0){
    		if(k==N){
    			ll sx=N/(2*K);
    			for(int x=0;x<=y&&x<=sx;x++)
    				ans=(ans+(ll)binom(y,x)*binom(T-y-1,T-y-x)%p*ne[K*x])%p;
    		}else{
    			ll sx=(N/2+1)/K-1;
    			for(int x=0;x<y&&x<=sx;x++)
    				ans=(ans+(ll)binom(y-1,x)*binom(T-y-1,T-y-x-1)%p*ne[K*(x+1)-1])%p;

    			sx=N/(2*K);
    			for(int x=0;x<=y&&x<=sx;x++)
    				ans=(ans+(ll)binom(y-1,x-1)*binom(T-y-1,T-y-x-1)%p*ne[K*x])%p;
    		}
		}
		
		ans=(ll)ans*jc[k]%p;
		printf("%d\n",ans);

	}else puts("0");

	return 0;
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 20ms
memory: 34816kb

input:

2 1 2

output:

1

result:

ok 1 number(s): "1"

Test #2:

score: 0
Accepted
time: 16ms
memory: 34816kb

input:

8 4 2

output:

6

result:

ok 1 number(s): "6"

Test #3:

score: 0
Accepted
time: 21ms
memory: 35072kb

input:

29 7 154

output:

0

result:

ok 1 number(s): "0"

Test #4:

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

input:

50 10 10

output:

77225400

result:

ok 1 number(s): "77225400"

Test #5:

score: 0
Accepted
time: 16ms
memory: 34872kb

input:

50 9 10

output:

11362680

result:

ok 1 number(s): "11362680"

Test #6:

score: 0
Accepted
time: 21ms
memory: 34868kb

input:

2 1 1

output:

0

result:

ok 1 number(s): "0"

Test #7:

score: 0
Accepted
time: 28ms
memory: 34840kb

input:

20 6 15

output:

0

result:

ok 1 number(s): "0"

Test #8:

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

input:

31 7 62

output:

0

result:

ok 1 number(s): "0"

Test #9:

score: 0
Accepted
time: 12ms
memory: 34896kb

input:

1 1 1

output:

1

result:

ok 1 number(s): "1"

Test #10:

score: 0
Accepted
time: 20ms
memory: 35064kb

input:

1 1 1000000000000

output:

1

result:

ok 1 number(s): "1"

Test #11:

score: 0
Accepted
time: 27ms
memory: 34832kb

input:

1000000 1414 999999999292

output:

626239238

result:

ok 1 number(s): "626239238"

Test #12:

score: 0
Accepted
time: 20ms
memory: 34872kb

input:

1000000 1413 999999999292

output:

804023673

result:

ok 1 number(s): "804023673"

Test #13:

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

input:

637704 1129 999999999368

output:

376288586

result:

ok 1 number(s): "376288586"

Test #14:

score: 0
Accepted
time: 21ms
memory: 34768kb

input:

777711 1246 999999999893

output:

315967293

result:

ok 1 number(s): "315967293"

Test #15:

score: 0
Accepted
time: 23ms
memory: 35064kb

input:

738077 1215 999999999405

output:

481429116

result:

ok 1 number(s): "481429116"

Test #16:

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

input:

878084 1324 999999999825

output:

85615210

result:

ok 1 number(s): "85615210"

Test #17:

score: 0
Accepted
time: 20ms
memory: 34872kb

input:

879744 1326 999999998712

output:

826681339

result:

ok 1 number(s): "826681339"

Test #18:

score: 0
Accepted
time: 20ms
memory: 35024kb

input:

519750 1019 999999999120

output:

380025867

result:

ok 1 number(s): "380025867"

Test #19:

score: 0
Accepted
time: 23ms
memory: 35068kb

input:

521410 1021 999999999509

output:

43307492

result:

ok 1 number(s): "43307492"

Test #20:

score: 0
Accepted
time: 12ms
memory: 34844kb

input:

578829 1075 999999999204

output:

847975635

result:

ok 1 number(s): "847975635"

Test #21:

score: 0
Accepted
time: 20ms
memory: 34812kb

input:

580490 1077 3

output:

0

result:

ok 1 number(s): "0"

Test #22:

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

input:

720496 1199 240

output:

0

result:

ok 1 number(s): "0"

Test #23:

score: 0
Accepted
time: 29ms
memory: 35064kb

input:

722157 1202 601

output:

952370308

result:

ok 1 number(s): "952370308"

Test #24:

score: 0
Accepted
time: 29ms
memory: 35080kb

input:

862163 1312 1313

output:

626393445

result:

ok 1 number(s): "626393445"

Test #25:

score: 0
Accepted
time: 20ms
memory: 34768kb

input:

822530 1283 1

output:

0

result:

ok 1 number(s): "0"

Test #26:

score: 0
Accepted
time: 16ms
memory: 34816kb

input:

962536 1386 1

output:

0

result:

ok 1 number(s): "0"

Test #27:

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

input:

1000000 1412 999999999292

output:

0

result:

ok 1 number(s): "0"

Test #28:

score: 0
Accepted
time: 21ms
memory: 34836kb

input:

1000000000 44721 999999975339

output:

510734471

result:

ok 1 number(s): "510734471"

Test #29:

score: 0
Accepted
time: 30ms
memory: 34872kb

input:

1000000000 44720 999999975339

output:

848193647

result:

ok 1 number(s): "848193647"

Test #30:

score: 0
Accepted
time: 17ms
memory: 35060kb

input:

842907373 41059 999999992564

output:

372008876

result:

ok 1 number(s): "372008876"

Test #31:

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

input:

509306715 31915 999999995252

output:

449159217

result:

ok 1 number(s): "449159217"

Test #32:

score: 0
Accepted
time: 16ms
memory: 34836kb

input:

724371023 38062 999999995226

output:

184015087

result:

ok 1 number(s): "184015087"

Test #33:

score: 0
Accepted
time: 29ms
memory: 34816kb

input:

890770366 42207 999999997728

output:

181797941

result:

ok 1 number(s): "181797941"

Test #34:

score: 0
Accepted
time: 28ms
memory: 35060kb

input:

900801961 42445 999999997945

output:

723246071

result:

ok 1 number(s): "723246071"

Test #35:

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

input:

567201303 33680 999999971049

output:

976667605

result:

ok 1 number(s): "976667605"

Test #36:

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

input:

782265611 39554 999999995722

output:

382214761

result:

ok 1 number(s): "382214761"

Test #37:

score: 0
Accepted
time: 19ms
memory: 34868kb

input:

743632241 38564 999999975555

output:

622113251

result:

ok 1 number(s): "622113251"

Test #38:

score: 0
Accepted
time: 20ms
memory: 35076kb

input:

753663836 38824 2

output:

0

result:

ok 1 number(s): "0"

Test #39:

score: 0
Accepted
time: 20ms
memory: 34816kb

input:

920063179 42896 181

output:

0

result:

ok 1 number(s): "0"

Test #40:

score: 0
Accepted
time: 19ms
memory: 34832kb

input:

635127486 35641 29

output:

0

result:

ok 1 number(s): "0"

Test #41:

score: 0
Accepted
time: 20ms
memory: 35072kb

input:

801526829 40037 40038

output:

966008245

result:

ok 1 number(s): "966008245"

Test #42:

score: 0
Accepted
time: 28ms
memory: 35084kb

input:

811558424 40288 4

output:

0

result:

ok 1 number(s): "0"

Test #43:

score: 0
Accepted
time: 20ms
memory: 34824kb

input:

977957767 44225 1134

output:

0

result:

ok 1 number(s): "0"

Test #44:

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

input:

1000000000 44719 999999975339

output:

0

result:

ok 1 number(s): "0"

Test #45:

score: 0
Accepted
time: 17ms
memory: 35024kb

input:

1000000000000 1414214 999999204684

output:

486279705

result:

ok 1 number(s): "486279705"

Test #46:

score: 0
Accepted
time: 30ms
memory: 34912kb

input:

1000000000000 1414213 999999204684

output:

480189439

result:

ok 1 number(s): "480189439"

Test #47:

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

input:

815496560693 811750096047 999999745266

output:

0

result:

ok 1 number(s): "0"

Test #48:

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

input:

582297122576 579821664123 999999766452

output:

0

result:

ok 1 number(s): "0"

Test #49:

score: 0
Accepted
time: 28ms
memory: 34832kb

input:

554379675168 1052976 999999724464

output:

850999094

result:

ok 1 number(s): "850999094"

Test #50:

score: 0
Accepted
time: 35ms
memory: 34836kb

input:

825475204348 1284892 999998814682

output:

718965161

result:

ok 1 number(s): "718965161"

Test #51:

score: 0
Accepted
time: 35ms
memory: 34848kb

input:

801852724236 1266375 999999350625

output:

266617066

result:

ok 1 number(s): "266617066"

Test #52:

score: 0
Accepted
time: 27ms
memory: 34872kb

input:

568653286119 1066445 999998949078

output:

268095321

result:

ok 1 number(s): "268095321"

Test #53:

score: 0
Accepted
time: 29ms
memory: 34844kb

input:

540735838711 1039938 999999181110

output:

955131707

result:

ok 1 number(s): "955131707"

Test #54:

score: 0
Accepted
time: 27ms
memory: 34872kb

input:

807536400595 1270854 999998944705

output:

83358005

result:

ok 1 number(s): "83358005"

Test #55:

score: 0
Accepted
time: 19ms
memory: 34776kb

input:

779618953187 1248694 624347

output:

695027909

result:

ok 1 number(s): "695027909"

Test #56:

score: 0
Accepted
time: 20ms
memory: 34868kb

input:

546419515070 1045388 1

output:

0

result:

ok 1 number(s): "0"

Test #57:

score: 0
Accepted
time: 28ms
memory: 34876kb

input:

527092002255 1026735 342245

output:

168868859

result:

ok 1 number(s): "168868859"

Test #58:

score: 0
Accepted
time: 28ms
memory: 34872kb

input:

793892564138 1260072 1

output:

0

result:

ok 1 number(s): "0"

Test #59:

score: 0
Accepted
time: 20ms
memory: 35064kb

input:

765975116731 1237720 44

output:

0

result:

ok 1 number(s): "0"

Test #60:

score: 0
Accepted
time: 28ms
memory: 34836kb

input:

532775678613 1032254 11865

output:

0

result:

ok 1 number(s): "0"

Test #61:

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

input:

1000000000000 1414212 999999204684

output:

0

result:

ok 1 number(s): "0"

Extra Test:

score: 0
Extra Test Passed