Submission #28621328
Source Code Expand
#include<bits/stdc++.h>
#define P 998244353
#define N 45
inline int fmo(int x){
return x+((x>>31)&P);
}
inline int fp(int x,int k=P-2){
int res=1;
for(;k;k>>=1,x=1ll*x*x%P)
if(k&1)
res=1ll*res*x%P;
return res;
}
int fac[N],inv[N],ifac[N],p2[N<<1];
inline void init(int x){
fac[0]=1;
for(int i=1;i<=x;i++)
fac[i]=1ll*fac[i-1]*i%P;
inv[1]=1;
for(int i=2;i<=x;i++)
inv[i]=fmo(-1ll*P/i*inv[P%i]%P);
ifac[0]=1;
for(int i=1;i<=x;i++)
ifac[i]=1ll*ifac[i-1]*inv[i]%P;
for(int i=-x;i<=x;i++)
p2[i+x]=i<0?fp(fp(2),-i):fp(2,i);
}
int n,a[N];
int pw[N][N];
int f[N][N],g[N][N];
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
a[i]=1ll*a[i]*fp(100)%P;
pw[i][0]=1;
for(int j=1;j<=n;j++)
pw[i][j]=1ll*pw[i][j-1]*a[i]%P;
}
init(n);
for(int o=0;o<n;o++){
for(int i=0;i<n-1;i++)
std::swap(pw[i],pw[i+1]);
memset(f,0,sizeof(f));
f[0][1]=fac[n-1];
for(int i=0;i<=n-2;i++){
memset(g,0,sizeof(g));
for(int s=0;s<=n-1;s++) for(int c=0;s+c<=n-1;c++)
for(int k=1;k<=n;k++)
g[s+c][k]=fmo(g[s+c][k]+1ll*ifac[c]*pw[i][c]%P*fmo(f[s][k]-1ll*p2[i-s-c+n]*f[s][k-1]%P)%P-P);
std::swap(f,g);
}
int res=0;
for(int i=0;i<n;i++){
int tmp=0;
for(int j=1;j<=n;j++)
tmp=fmo(tmp+1ll*f[i][j]*fp(fmo(1-p2[-j+n]))%P-P);
res=fmo(res+1ll*ifac[n-1-i]*pw[n-1][n-1-i]%P*tmp%P-P);
}
res=1ll*res*fp(2)%P;
printf("%d ",res);
}
puts("");
}
Submission Info
| Submission Time |
|
| Task |
E - Cheese |
| User |
Y25t |
| Language |
C++ (GCC 9.2.1) |
| Score |
1600 |
| Code Size |
1478 Byte |
| Status |
AC |
| Exec Time |
213 ms |
| Memory |
3864 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:38:7: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
38 | scanf("%d",&n);
| ~~~~~^~~~~~~~~
./Main.cpp:40:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
40 | scanf("%d",&a[i]);
| ~~~~~^~~~~~~~~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1600 / 1600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt |
| All |
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00-sample-001.txt |
AC |
8 ms |
3612 KiB |
| 00-sample-002.txt |
AC |
2 ms |
3796 KiB |
| 00-sample-003.txt |
AC |
3 ms |
3604 KiB |
| 01-001.txt |
AC |
2 ms |
3644 KiB |
| 01-002.txt |
AC |
2 ms |
3748 KiB |
| 01-003.txt |
AC |
2 ms |
3656 KiB |
| 01-004.txt |
AC |
2 ms |
3604 KiB |
| 01-005.txt |
AC |
3 ms |
3844 KiB |
| 01-006.txt |
AC |
4 ms |
3848 KiB |
| 01-007.txt |
AC |
7 ms |
3864 KiB |
| 01-008.txt |
AC |
10 ms |
3664 KiB |
| 01-009.txt |
AC |
15 ms |
3748 KiB |
| 01-010.txt |
AC |
143 ms |
3792 KiB |
| 01-011.txt |
AC |
2 ms |
3792 KiB |
| 01-012.txt |
AC |
29 ms |
3744 KiB |
| 01-013.txt |
AC |
3 ms |
3616 KiB |
| 01-014.txt |
AC |
9 ms |
3788 KiB |
| 01-015.txt |
AC |
5 ms |
3756 KiB |
| 01-016.txt |
AC |
208 ms |
3752 KiB |
| 01-017.txt |
AC |
207 ms |
3656 KiB |
| 01-018.txt |
AC |
210 ms |
3712 KiB |
| 01-019.txt |
AC |
213 ms |
3768 KiB |
| 01-020.txt |
AC |
207 ms |
3788 KiB |
| 01-021.txt |
AC |
210 ms |
3660 KiB |
| 01-022.txt |
AC |
209 ms |
3848 KiB |
| 01-023.txt |
AC |
209 ms |
3628 KiB |
| 01-024.txt |
AC |
210 ms |
3612 KiB |
| 01-025.txt |
AC |
212 ms |
3632 KiB |