Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define gc c=getchar()
- #define r(x) read(x)
- #define db double
- template<typename T>
- inline void read(T&x){
- x=0;T k=1;char gc;
- while(!isdigit(c)){if(c=='-')k=-1;gc;}
- while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
- }
- const int N=105;
- db f[N];
- inline void solve1(int n){
- for(int i=2;i<=n;++i){
- f[i]=f[i-1]+2.0/i;
- }
- printf("%lf\n",f[n]);
- }
- db g[N][N];
- inline void solve2(int n){
- for(int i=1;i<=n;++i){
- g[i][0]=1;
- }
- for(int i=2;i<=n;++i){
- for(int j=1;j<=i;++j){
- for(int k=1;k<i;++k){
- g[i][j]+=g[k][j-1]+g[i-k][j-1]-g[k][j-1]*g[i-k][j-1];
- }
- g[i][j]/=(i-1);
- }
- }
- db ans=0;
- for(int i=1;i<=n;++i){
- ans+=g[n][i];
- }
- printf("%lf\n",ans);
- }
- int main(){
- int q,n;r(q),r(n);
- if(q==1)solve1(n);
- else solve2(n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement