數學期望--luogu1291百事世界盃之旅
阿新 • • 發佈:2019-02-06
純純的數學期望
解題思路大概有兩種
第一種:
第二種:
但兩種方法最後都是一個公式:
n*(1/1+1/2+···+1/n)
然後注意一下題目要求的複雜的輸出格式和各種細節什麼的
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;
int n,num,knum;
LL fz,fm=1,z;
inline LL gcd(LL x,LL y){
if (y==0) return x;
return gcd(y,x%y);
}
inline int s(LL x){
int c=0;
while(x>0){
x/=10;
c++;
}
return c;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
LL d=gcd(fm,i);
fz=fz*(i/d)+n*fm/d;
fm=i/d*fm;
LL r=gcd(fz,fm);
fz/=r; fm/=r;
}
if (fz>=fm){
z=fz/fm;
fz=fz-z*fm;
}
if(fz==0) printf("%lld",z);
else{
num=s(fm);
knum=s(z);
for(int i=1;i<=knum;i++) printf(" ");
printf("%lld\n%lld",fz,z);
for(int i=1;i<=num;i++) printf("-");
printf("\n");
for(int i=1;i<=knum;i++) printf(" ");
printf("%lld",fm);
}
return 0;
}