QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#222946 | #6637. Perfect Strings | Nerovix | AC ✓ | 224ms | 159944kb | C++14 | 1.6kb | 2023-10-21 19:59:00 | 2023-10-21 19:59:00 |
Judging History
answer
#include<bits/stdc++.h>
#define fi first
#define se second
#define mpr make_pair
#define pb push_back
#define ll long long
using namespace std;
const int mod=1e9+7;
int add(int x,int y){
x+=y;
return x>=mod?x-mod:x;
}
void adto(int&x,int y){
x+=y;
x>=mod?x-=mod:0;
}
int mul(int x,int y){
return 1ll*x*y%mod;
}
int qpow(int a,int b){
int ans=1;
while(b){
if(b&1)ans=mul(ans,a);
a=mul(a,a);
b>>=1;
}
return ans;
}
const int maxn=1e7+10;
int n,c;
int A[maxn];
int jc[maxn],ijc[maxn];
int i2p[maxn];
void solve(){
n=c=1e7;
cin>>n>>c;
int t=mod-mul(4,c-1),em=t;
A[0]=1;
A[1]=mul(t,(mod+1)/2);
int u=1;
for(int k=2;k<=n;k++){
em=mul(em,t);
u=mul(u,2*k-3);
int tmp=mul(em,mul(ijc[k],i2p[k]));
tmp=mul(tmp,u);
if(k-1&1)tmp=mod-tmp;
A[k]=tmp;
}
for(int i=0;i<=n;i++){
A[i]=mul(A[i],mod-c);
}
adto(A[0],(c-2+mod)%mod);
for(int i=0;i<=n;i++){
A[i]=mul(A[i],mod-(mod+1)/2);
}
int ans=0;
t=1;
for(int i=0;i<=n;i++){
adto(ans,mul(A[n-i],t));
t=mul(t,mul(c,c));
}
cout<<ans<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
for(int i=jc[0]=i2p[0]=1;i<maxn;i++){
jc[i]=mul(jc[i-1],i);
i2p[i]=mul(i2p[i-1],(mod+1)/2);
}
ijc[maxn-1]=qpow(jc[maxn-1],mod-2);
for(int i=maxn-2;~i;i--){
ijc[i]=mul(ijc[i+1],i+1);
}
int t=1;
cin>>t;
while(t--)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 75ms
memory: 121332kb
input:
2 3 1 2 2
output:
1 6
result:
ok 2 number(s): "1 6"
Test #2:
score: 0
Accepted
time: 102ms
memory: 122660kb
input:
100000 1 1 4 1 5 5 3 5 1 2 5 3 1 1 3 3 5 2 2 1 4 1 5 5 2 3 4 1 3 3 2 5 3 2 4 3 4 4 3 5 3 1 5 2 2 2 4 2 5 4 1 2 3 1 4 5 2 5 5 3 1 5 5 2 3 2 5 2 4 1 1 3 3 2 4 5 2 1 4 1 2 2 1 1 3 5 4 5 2 3 3 5 2 5 2 4 5 4 2 3 1 1 2 1 4 4 1 5 5 4 1 3 5 4 4 5 1 3 1 1 3 3 2 4 2 4 2 1 5 5 1 3 2 3 4 1 4 3 2 4 2 4 4 2 1 1 1...
output:
1 1 71445 485 2 3543 1 87 252 1 1 71445 15 1 87 45 20 543 2092 485 1 252 6 70 19864 2 1 5725 45 3543 5 252 20 252 1 3 20 5725 1 1 6 1 485 5725 15 485 45 28 19864 15 1 1 2092 5 19864 3 19864 5725 3 1 87 28 28 1 71445 3 15 1 543 28 28 70 1 1 71445 15 2092 3 1 2 15 87 2092 19864 71445 6 252 2092 252 15...
result:
ok 100000 numbers
Test #3:
score: 0
Accepted
time: 166ms
memory: 120888kb
input:
100000 94 7867320 84 1294950 35 8570570 72 7050952 23 3907221 95 7482398 58 2363048 44 2234552 50 8809524 37 1061961 19 884367 38 3261675 59 1563189 61 7603994 83 3131714 19 6207284 64 5662457 2 6845951 84 4688192 13 7552675 38 3119650 84 6311084 10 5040332 53 5981961 46 7308176 43 679952 30 2922213...
output:
89775996 781446171 477730749 425095995 683480274 139962614 676040688 83128356 609223622 595772607 273248526 319532567 917638183 692265001 864029162 41269371 365591107 82686713 397805948 799200818 123574040 576607518 6430981 978266206 446712393 201799413 709622262 325465125 319418065 850111422 513285...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 220ms
memory: 121820kb
input:
18170 339 1623650 128 3200275 965 1829351 997 1547816 435 9138202 974 1806376 560 1011936 345 3813921 938 2229395 994 2411734 163 6603389 837 1133885 494 1068385 197 9254017 617 9553650 136 5850880 376 8616282 456 5759693 302 515509 293 2633903 703 7929747 205 5091361 303 5968505 740 872272 246 4106...
output:
461108227 93969714 967535558 286996770 439955818 513651814 367718117 70089455 537505709 989455211 600861203 892954232 899899624 825588888 536671357 118059202 325888233 146830823 953101687 974677182 364272875 482192182 565890497 657497852 297995102 797194699 322320804 744121644 399550079 576261681 42...
result:
ok 18170 numbers
Test #5:
score: 0
Accepted
time: 221ms
memory: 122064kb
input:
176 15130 5219515 54554 814733 69310 3225417 43446 3402232 76425 3330887 34830 2231162 47132 342177 79713 4699528 48406 1562867 21339 5382282 34946 1991698 15555 4141661 52222 2028547 46168 5336018 52551 3781122 23469 1309869 86778 5167485 91984 6969638 28587 3283991 61602 8233067 59908 7918245 6735...
output:
819064610 746619602 481292930 837614851 505712843 251469513 848664626 555419188 788141020 910120658 97942397 995461053 434307672 778837756 976339209 531426099 871529896 875150459 25421918 983527791 281476053 75045944 504006808 866398210 213458087 196306823 900182966 590704432 289412620 28788603 7631...
result:
ok 176 numbers
Test #6:
score: 0
Accepted
time: 214ms
memory: 125068kb
input:
13 931768 3882995 670768 6406509 941049 8590729 817046 5807892 779381 8981570 680279 9990918 396926 9134499 722228 9178753 561021 6110788 686746 6740122 458271 3748820 854144 5848248 548582 8566164
output:
268755962 578943126 92794411 444457165 169780513 804005790 351652199 721238566 102253686 200247655 716047991 465958249 717148868
result:
ok 13 numbers
Test #7:
score: 0
Accepted
time: 209ms
memory: 129476kb
input:
5 1921421 2863210 1611550 9114363 1800313 2824695 1973050 2501730 1312507 7997456
output:
398101698 182608998 453457939 585926383 479930575
result:
ok 5 number(s): "398101698 182608998 453457939 585926383 479930575"
Test #8:
score: 0
Accepted
time: 204ms
memory: 159944kb
input:
1 10000000 5350652
output:
694744897
result:
ok 1 number(s): "694744897"
Test #9:
score: 0
Accepted
time: 221ms
memory: 159944kb
input:
1 10000000 1
output:
1
result:
ok 1 number(s): "1"
Test #10:
score: 0
Accepted
time: 210ms
memory: 159028kb
input:
1 9587024 1628294
output:
983037582
result:
ok 1 number(s): "983037582"
Test #11:
score: 0
Accepted
time: 224ms
memory: 159924kb
input:
1 9994540 7861359
output:
145678106
result:
ok 1 number(s): "145678106"
Test #12:
score: 0
Accepted
time: 217ms
memory: 159908kb
input:
1 9993434 8756421
output:
980562657
result:
ok 1 number(s): "980562657"
Test #13:
score: 0
Accepted
time: 205ms
memory: 159924kb
input:
1 9999982 9427845
output:
977921308
result:
ok 1 number(s): "977921308"