Submission #19413

#TimeUsernameProblemLanguageResultExecution timeMemory
19413imsifileΩ (kriii4_P3)C++98
100 / 100
0 ms1084 KiB
#include<stdio.h> #define mod 1000000007 typedef long long lld; lld a, b, sum; lld exp(lld a, lld b){ if(b==0)return 1; lld k=exp(a, b/2); k=(k*k)%mod; if(b%2)k=(k*a)%mod; return k; } int n, k; lld p, q, pq, mpq, dy[111], re; double pr, d2[111]; int main(){ int n, i; scanf("%lld%lld%d%d", &p, &q, &n, &k); if(k==0){puts("0"); return 0;} if(k==n){puts("1"); return 0;} if(p==q){puts("0"); return 0;} if(q==0){puts("1"); return 0;} pr = (double)q/p; pq = q*exp(p,mod-2)%mod, mpq = (mod-pq)%mod; dy[1]=1; for(i=1; i<n; i++)dy[i+1] = (dy[i] + mpq*dy[i-1]%mod)*exp(1+mpq, mod-2)%mod; d2[1]=1; for(i=1; i<n; i++)d2[i+1] = (d2[i] - pr*d2[i-1])/(1-pr); // for(i=0; i<=n; i++)printf("%lf ", d2[i]/d2[n]); // puts(""); printf("%lld", dy[k]*exp(dy[n],mod-2)%mod); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...