アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値
僕が作成、提出したコードは、以下のとおりです。
かたよったくじ (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 かたよったくじ (1) https://algo-method.com/tasks/795 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; ld ans=0.0; for(ld i=0;i<n;i++){ ld a; cin>>a; ans+=a; } ans/=n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
かたよったくじ (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 かたよったくじ (2) https://algo-method.com/tasks/796 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld m; cin>>m; ld ans=0.0,div=0.0; for(ld i=0;i<m;i++){ ld a,c; cin>>a>>c; ans+=a*c; div+=c; } ans/=div; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
かたよったくじ (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 かたよったくじ (3) https://algo-method.com/tasks/797 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld m; cin>>m; ld ans=0.0; for(ld i=0;i<m;i++){ ld a,p; cin>>a>>p; ans+=(a*p/100); } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
変わったサイコロ (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 変わったサイコロ (4) https://algo-method.com/tasks/798 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; vector<ld> p(n); for(ld i=0;i<n;i++){ cin>>p[i]; } ld ans=0.0; for(ld i=0;i<n;i++){ ans+=(i+1)*p[i]/100; } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
宝くじの期待値
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 宝くじの期待値 https://algo-method.com/tasks/799 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; vector<ld> a(n),b(n); ld sum=0.0; for(ld i=0;i<n;i++){ cin>>a[i]; } for(ld i=0;i<n;i++){ cin>>b[i]; sum+=b[i]; } ld ans=0.0; for(ld i=0;i<n;i++){ ans+=a[i]*b[i]/sum; } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
期待値の性質 (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 期待値の性質 (1) https://algo-method.com/tasks/800 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll m,k; cin>>m>>k; vector<ll> a(m),p(m); for(ll i=0;i<m;i++){ cin>>a[i]>>p[i]; } cout<<k<<endl; return 0; }
期待値の性質 (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 期待値の性質 (2) https://algo-method.com/tasks/801 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll m,k; cin>>m>>k; vector<ll> a(m),p(m); for(ll i=0;i<m;i++){ cin>>a[i]>>p[i]; } cout<<k<<endl; return 0; }
期待値の性質 (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 期待値の性質 (3) https://algo-method.com/tasks/802 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,m; cin>>n>>m; vector<ld> a(n),p(n),b(m),q(m); for(ld i=0;i<n;i++){ cin>>a[i]>>p[i]; } for(ld i=0;i<m;i++){ cin>>b[i]>>q[i]; } ld ans=0.0; for(ld i=0;i<n;i++){ for(ld j=0;j<m;j++){ ans+=(a[i]+b[j])*(p[i]/100)*(q[j]/100); } } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
期待値の性質 (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 期待値の性質 (4) https://algo-method.com/tasks/803 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,m; cin>>n>>m; vector<ld> a(n),p(n),b(m),q(m); for(ld i=0;i<n;i++){ cin>>a[i]>>p[i]; } for(ld i=0;i<m;i++){ cin>>b[i]>>q[i]; } ld ans=0.0; for(ld i=0;i<n;i++){ for(ld j=0;j<m;j++){ ans+=(a[i]*b[j])*(p[i]/100)*(q[j]/100); } } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
コイントス (5)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 コイントス (5) https://algo-method.com/tasks/805 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; using ld=long double; ll combination(ll n,ll r){ ll permutation=1; for(ll i=0;i<r;i++){ permutation*=(n-i); } ll factorial=1; for(ll i=1;i<=r;i++){ factorial*=i; } ll ret=permutation/factorial; return ret; } ll twoPOW(ll n){ ll ret=1; for(ll i=0;i<n;i++){ ret*=2; } return ret; } int main(void){ ll n; cin>>n; for(ll i=0;i<=n;i++){ ll cnt=combination(n,i); ll all=twoPOW(n); ld ans=(ld)cnt/all; cout<<fixed<<setprecision(10)<<ans<<endl; } return 0; }
コイントス (6)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 コイントス (6) https://algo-method.com/tasks/806 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; using ld=long double; ll combination(ll n,ll r){ ll permutation=1; for(ll i=0;i<r;i++){ permutation*=(n-i); } ll factorial=1; for(ll i=1;i<=r;i++){ factorial*=i; } ll ret=permutation/factorial; return ret; } int main(void){ ll n; ld p; cin>>n>>p; for(ll i=0;i<=n;i++){ ll cnt=combination(n,i); ld num=1.0; num*=pow(p/100,i); num*=pow((100-p)/100,n-i); ld ans=cnt*num; cout<<fixed<<setprecision(10)<<ans<<endl; } return 0; }
コイントス (7)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 コイントス (7) https://algo-method.com/tasks/811 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld p; cin>>p; ld num=p/100; for(ld i=1;i<=10;i++){ ld ans=pow(1-num,i-1)*num; cout<<fixed<<setprecision(10)<<ans<<endl; } return 0; }
二項分布の期待値
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 二項分布の期待値 https://algo-method.com/tasks/808 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,p; cin>>n>>p; ld ans=n*p/100; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
幾何分布の期待値
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 幾何分布の期待値 https://algo-method.com/tasks/809 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld p; cin>>p; ld ans=100/p; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
すごろく
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 すごろく https://algo-method.com/tasks/813 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; vector<ld> d(6); for(ld i=0;i<6;i++){ cin>>d[i]; } ld num=0.0; for(ld i=0;i<6;i++){ num+=d[i]; } num/=6; ld ans=num*n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
席替え
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 席替え https://algo-method.com/tasks/815 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; cout<<1<<endl; return 0; }
Ex. シマシマ度
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 Ex. シマシマ度 https://algo-method.com/tasks/814 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; ld ans=(n+1)/2; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
Ex. クーポンコレクター問題
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(9) 期待値 Ex. クーポンコレクター問題 https://algo-method.com/tasks/810 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n; cin>>n; ld ans=0.0; for(ld i=0;i<n;i++){ ld num=n/(n-i); ans+=num; } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com