QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#611393#7746. Go go Baron Bunny!xlwangAC ✓135ms36980kbC++143.3kb2024-10-04 20:50:212024-10-04 20:50:21

Judging History

This is the latest submission verdict.

  • [2024-10-04 20:50:21]
  • Judged
  • Verdict: AC
  • Time: 135ms
  • Memory: 36980kb
  • [2024-10-04 20:50:21]
  • Submitted

answer

#include<bits/stdc++.h>
#define ll long long
#define int long long
#define fr(i,j,k) for(register int i=j;i<=k;++i)
#define rf(i,j,k) for(register int i=j;i>=k;--i)
#define foredge(i,j) for(register int i=head[j];i;i=e[i].nxt)
#define pb push_back
#define Times printf("Time:%.3lf\n",clock()/CLOCKS_PER_SEC)
#define pii pair<int,int>
#define mk make_pair
using namespace std;
inline int read(){
	int x=0;
	bool f=0;
	char c=getchar();
	while(!isdigit(c)) f|=(c=='-'),c=getchar();
	while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
	return f?-x:x;
}
inline void write(int x){
    if(x<0){putchar('-');x=-x;}
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
inline void writeln(int x){write(x); puts("");}
inline void writepl(int x){write(x); putchar(' ');}
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
inline int randfind(int l,int r){return rnd()%(r-l+1)+l;}
//inline void init(){
//	int t=read();
//	while(t--) work();
//}
const int Maxn=2e6+10,mod=998244353;
inline void add(int &x,int y){x+=y;if(x>=mod) x-=mod;}
inline int ksm(int x,int y=mod-2){
    int sum=1;
    while(y){
        if(y&1) sum=1ll*sum*x%mod;
        y=y/2;x=1ll*x*x%mod;
    }return sum;
}
int n,k,t;
int f[Maxn];
int g[Maxn];
int fac[Maxn],ifac[Maxn];
inline int C(int x,int y){if(x<y || x<0 || y<0) return 0;return 1ll*fac[x]*ifac[y]%mod*ifac[x-y]%mod;}
inline void into(int N){
    fac[0]=ifac[0]=1;
    fr(i,1,N) fac[i]=fac[i-1]*i%mod;
    ifac[N]=ksm(fac[N]);
    rf(i,N-1,1) ifac[i]=ifac[i+1]*(i+1)%mod;
}
inline void init(){
    n=read();k=read();t=read();
    into(2e6);
}
int ans;
const int inv2=ksm(2);
inline int gcd(int x,int y){if(y==0) return x;return gcd(y,x%y);}
inline int getv(int x,int y){return C(x-1,y-1);}
inline int getans(int x,int y){
    if(x>=2e6) return 0;
    // cout<<n<<' '<<x<<' '<<y<<endl;
    if(n<x*(x+1)/2) return 0;
    // cout<<"**"<<(x+1)*(x+2)/2<<endl;
    if(n>(x+1)*(x+2)/2) return 0;
    int s=n-x*(x+1)/2;
    int ggcd=gcd(x+1,t);
    // cout<<s<<' '<<ggcd<<endl;
    if(s%((x+1)/ggcd)!=0) return 0;
    int s1=s/((x+1)/ggcd),s2=ggcd;
    if(s1==0) return fac[k];
    // cout<<s2<<' '<<s1<<' '<<x<<endl;
	int ans=0;
    fr(tp,0,1) if(tp==(y)){
        fr(i,2,s2){
            if(tp){
                int now=getv(s1,(i+1)/2)*getv(s2-s1,i/2)%mod;
                // cout<<"**"<<s1<<' '<<(i+1)/2<<' '<<(x+1)/s2*(i/2)<<' '<<now<<endl;
                now=now*ksm(inv2,(x+1)/s2*(i/2))%mod;
                add(ans,now);
            }
            else {
                if(i&1){
                    int now=getv(s1,(i)/2)*getv(s2-s1,(i+1)/2)%mod;
                    now=now*ksm(inv2,(x+1)/s2*(i/2))%mod;
                    add(ans,now);
                }
                else {
                    int now=getv(s1,(i)/2)*getv(s2-s1,(i+1)/2)%mod;
                    now=now*ksm(inv2,(x+1)/s2*(i/2)-1)%mod;
                    add(ans,now);
                }
            }
            // cout<<tp<<' '<<i<<' '<<ans<<endl;
		}
	}
    return 1ll*ans*fac[k]%mod;
}
inline void work(){
    ans=(getans(k,0)+getans(k-1,1))%mod;
    writeln(ans);
}
signed main(){
	// freopen("input.in","r",stdin);
	// freopen("output.out","w",stdout);
    init();work();
    // printf("\nTIME:%.3lf",(double)clock()/CLOCKS_PER_SEC);
	return 0;
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 16ms
memory: 36548kb

input:

2 1 2

output:

1

result:

ok 1 number(s): "1"

Test #2:

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

input:

8 4 2

output:

6

result:

ok 1 number(s): "6"

Test #3:

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

input:

29 7 154

output:

0

result:

ok 1 number(s): "0"

Test #4:

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

input:

50 10 10

output:

77225400

result:

ok 1 number(s): "77225400"

Test #5:

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

input:

50 9 10

output:

11362680

result:

ok 1 number(s): "11362680"

Test #6:

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

input:

2 1 1

output:

0

result:

ok 1 number(s): "0"

Test #7:

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

input:

20 6 15

output:

0

result:

ok 1 number(s): "0"

Test #8:

score: 0
Accepted
time: 15ms
memory: 36220kb

input:

31 7 62

output:

0

result:

ok 1 number(s): "0"

Test #9:

score: 0
Accepted
time: 8ms
memory: 36980kb

input:

1 1 1

output:

1

result:

ok 1 number(s): "1"

Test #10:

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

input:

1 1 1000000000000

output:

1

result:

ok 1 number(s): "1"

Test #11:

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

input:

1000000 1414 999999999292

output:

626239238

result:

ok 1 number(s): "626239238"

Test #12:

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

input:

1000000 1413 999999999292

output:

804023673

result:

ok 1 number(s): "804023673"

Test #13:

score: 0
Accepted
time: 25ms
memory: 36160kb

input:

637704 1129 999999999368

output:

376288586

result:

ok 1 number(s): "376288586"

Test #14:

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

input:

777711 1246 999999999893

output:

315967293

result:

ok 1 number(s): "315967293"

Test #15:

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

input:

738077 1215 999999999405

output:

481429116

result:

ok 1 number(s): "481429116"

Test #16:

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

input:

878084 1324 999999999825

output:

85615210

result:

ok 1 number(s): "85615210"

Test #17:

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

input:

879744 1326 999999998712

output:

826681339

result:

ok 1 number(s): "826681339"

Test #18:

score: 0
Accepted
time: 8ms
memory: 36648kb

input:

519750 1019 999999999120

output:

380025867

result:

ok 1 number(s): "380025867"

Test #19:

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

input:

521410 1021 999999999509

output:

43307492

result:

ok 1 number(s): "43307492"

Test #20:

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

input:

578829 1075 999999999204

output:

847975635

result:

ok 1 number(s): "847975635"

Test #21:

score: 0
Accepted
time: 18ms
memory: 36620kb

input:

580490 1077 3

output:

0

result:

ok 1 number(s): "0"

Test #22:

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

input:

720496 1199 240

output:

0

result:

ok 1 number(s): "0"

Test #23:

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

input:

722157 1202 601

output:

952370308

result:

ok 1 number(s): "952370308"

Test #24:

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

input:

862163 1312 1313

output:

626393445

result:

ok 1 number(s): "626393445"

Test #25:

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

input:

822530 1283 1

output:

0

result:

ok 1 number(s): "0"

Test #26:

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

input:

962536 1386 1

output:

0

result:

ok 1 number(s): "0"

Test #27:

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

input:

1000000 1412 999999999292

output:

0

result:

ok 1 number(s): "0"

Test #28:

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

input:

1000000000 44721 999999975339

output:

510734471

result:

ok 1 number(s): "510734471"

Test #29:

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

input:

1000000000 44720 999999975339

output:

848193647

result:

ok 1 number(s): "848193647"

Test #30:

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

input:

842907373 41059 999999992564

output:

372008876

result:

ok 1 number(s): "372008876"

Test #31:

score: 0
Accepted
time: 22ms
memory: 35760kb

input:

509306715 31915 999999995252

output:

449159217

result:

ok 1 number(s): "449159217"

Test #32:

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

input:

724371023 38062 999999995226

output:

184015087

result:

ok 1 number(s): "184015087"

Test #33:

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

input:

890770366 42207 999999997728

output:

181797941

result:

ok 1 number(s): "181797941"

Test #34:

score: 0
Accepted
time: 15ms
memory: 35184kb

input:

900801961 42445 999999997945

output:

723246071

result:

ok 1 number(s): "723246071"

Test #35:

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

input:

567201303 33680 999999971049

output:

976667605

result:

ok 1 number(s): "976667605"

Test #36:

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

input:

782265611 39554 999999995722

output:

382214761

result:

ok 1 number(s): "382214761"

Test #37:

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

input:

743632241 38564 999999975555

output:

622113251

result:

ok 1 number(s): "622113251"

Test #38:

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

input:

753663836 38824 2

output:

0

result:

ok 1 number(s): "0"

Test #39:

score: 0
Accepted
time: 15ms
memory: 36172kb

input:

920063179 42896 181

output:

0

result:

ok 1 number(s): "0"

Test #40:

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

input:

635127486 35641 29

output:

0

result:

ok 1 number(s): "0"

Test #41:

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

input:

801526829 40037 40038

output:

966008245

result:

ok 1 number(s): "966008245"

Test #42:

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

input:

811558424 40288 4

output:

0

result:

ok 1 number(s): "0"

Test #43:

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

input:

977957767 44225 1134

output:

0

result:

ok 1 number(s): "0"

Test #44:

score: 0
Accepted
time: 8ms
memory: 36340kb

input:

1000000000 44719 999999975339

output:

0

result:

ok 1 number(s): "0"

Test #45:

score: 0
Accepted
time: 135ms
memory: 35452kb

input:

1000000000000 1414214 999999204684

output:

486279705

result:

ok 1 number(s): "486279705"

Test #46:

score: 0
Accepted
time: 134ms
memory: 35584kb

input:

1000000000000 1414213 999999204684

output:

480189439

result:

ok 1 number(s): "480189439"

Test #47:

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

input:

815496560693 811750096047 999999745266

output:

0

result:

ok 1 number(s): "0"

Test #48:

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

input:

582297122576 579821664123 999999766452

output:

0

result:

ok 1 number(s): "0"

Test #49:

score: 0
Accepted
time: 90ms
memory: 36864kb

input:

554379675168 1052976 999999724464

output:

850999094

result:

ok 1 number(s): "850999094"

Test #50:

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

input:

825475204348 1284892 999998814682

output:

718965161

result:

ok 1 number(s): "718965161"

Test #51:

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

input:

801852724236 1266375 999999350625

output:

266617066

result:

ok 1 number(s): "266617066"

Test #52:

score: 0
Accepted
time: 104ms
memory: 36320kb

input:

568653286119 1066445 999998949078

output:

268095321

result:

ok 1 number(s): "268095321"

Test #53:

score: 0
Accepted
time: 99ms
memory: 35028kb

input:

540735838711 1039938 999999181110

output:

955131707

result:

ok 1 number(s): "955131707"

Test #54:

score: 0
Accepted
time: 127ms
memory: 36028kb

input:

807536400595 1270854 999998944705

output:

83358005

result:

ok 1 number(s): "83358005"

Test #55:

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

input:

779618953187 1248694 624347

output:

695027909

result:

ok 1 number(s): "695027909"

Test #56:

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

input:

546419515070 1045388 1

output:

0

result:

ok 1 number(s): "0"

Test #57:

score: 0
Accepted
time: 52ms
memory: 36964kb

input:

527092002255 1026735 342245

output:

168868859

result:

ok 1 number(s): "168868859"

Test #58:

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

input:

793892564138 1260072 1

output:

0

result:

ok 1 number(s): "0"

Test #59:

score: 0
Accepted
time: 15ms
memory: 36932kb

input:

765975116731 1237720 44

output:

0

result:

ok 1 number(s): "0"

Test #60:

score: 0
Accepted
time: 15ms
memory: 34960kb

input:

532775678613 1032254 11865

output:

0

result:

ok 1 number(s): "0"

Test #61:

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

input:

1000000000000 1414212 999999204684

output:

0

result:

ok 1 number(s): "0"

Extra Test:

score: 0
Extra Test Passed