Beautiful Mirrors
CF1265E Beautiful Mirrors
思路:
一道期望的题,不难得出下式:
\[f_i=(1-p\%)f_1+p\%f_{i+1}+1
\]
极为暴力的思路就是\(gauss\)消元,时间复杂度\(O(n^3)\)显然过不了。但我们发现最后要求的只有\(f_1\),所以可以手算消元😉
将等号左边的式子移到右边,易得矩阵如下
\[\left[
\begin{matrix}
-p_1\%&p_1\%&0&\cdots&1\\
1-p_2\%&-1&p_2\%&\cdots&1\\
1-p_3\%&0&-1&\cdots&1\\
\vdots&\vdots&\vdots&\ddots&\vdots\\
0&0&0&\cdots&1
\end{matrix}\right]
\]
第一行+(p1%)第二行+(p1%p2%)第三行+...便把除了\(f_1\)和常数的所有项消去了
\(\mathfrak{Talk\ is\ cheap,show\ you\ the\ code.}\)
#include<bits/stdc++.h>
using namespace std;
# define read read1<int>()
# define ll long long
# define ull unsigned ll
# define Type template<typename T>
Type inline const T read1(){
T m=0;
char k=getchar();
while(('0'>k||k>'9')&&(k!='-'))k=getchar();
const bool f=(k=='-'?1:0);
if(f)k=getchar();
while('0'<=k&&k<='9')m=(m<<3)+(m<<1)+(k^48),k=getchar();
return f?-m:m;
}
# define mod 998244353ll
ll p2(ll x){return x*x%mod;}
ll qkpow(ll n,ll m){
return m?m&1?p2(qkpow(n,m>>1))*n%mod:p2(qkpow(n,m>>1)):1;
}
struct A{
ll x,y;
A(ll u=0,ll v=0){x=u,y=v;}
A operator +(A b){
return A((x*b.y+y*b.x)%mod,y*b.y%mod);
}
A operator -(){return A(mod-x,y);}
A operator -(A b){
return *this+(-b);
}
A operator *(A b){
return A(x*b.x%mod,y*b.y%mod);
}
A operator /(A b){
return *this*A(b.y,b.x);
}
ll operator ~(){return x*qkpow(y,mod-2)%mod;}
};
int main(){
// cout<<qkpow(2,10);
int s=read;
ll p;
A tem(1,1),t(mod-(p=read),100),tm(p,100);
for(int i=2;i<=s;++i){
p=read;
tem=tem+tm;
t=t+A(100-p,100)*tm;
tm=tm*A(p,100);
}
printf("%lld",mod-~(tem/t));
// puts("---");
return 0;
}
因果乃旋转纺车,光彩之多面明镜
浮世苍茫,不过瞬逝幻梦
善恶爱诳,皆有定数
于命运之轮中
吞噬于黄泉之冥暗
呜呼,吾乃梦之戍人
幻恋之观者
唯于万华镜中,永世长存
浮世苍茫,不过瞬逝幻梦
善恶爱诳,皆有定数
于命运之轮中
吞噬于黄泉之冥暗
呜呼,吾乃梦之戍人
幻恋之观者
唯于万华镜中,永世长存

浙公网安备 33010602011771号