アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率
僕が作成、提出したコードは、以下のとおりです。
くじ引き (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (1) https://algo-method.com/tasks/759 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n; cin>>n; double ans=1/n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
2つのサイコロ (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 2つのサイコロ (3) https://algo-method.com/tasks/760 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int x; cin>>x; double cnt=0.0; for(int i=0;i<6;i++){ for(int j=0;j<6;j++){ int sum=(i+1)+(j+1); if(x==sum){ cnt+=1.0; } } } double ans=cnt/36.0; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
くじ引き (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (2) https://algo-method.com/tasks/762 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n,m; cin>>n>>m; double ans=m/n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
変わったサイコロ (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 変わったサイコロ (1) https://algo-method.com/tasks/763 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,x; cin>>n>>x; vector<double> p(n+1); for(int i=1;i<=n;i++){ cin>>p[i]; } double ans=0.0; for(int i=1;i<=n;i++){ if(i%x==0){ ans+=p[i]/100; } } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
変わったサイコロ (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 変わったサイコロ (2) https://algo-method.com/tasks/768 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<double> p(n+1); vector<int> d(m); for(int i=1;i<=n;i++){ cin>>p[i]; } for(int i=0;i<m;i++){ cin>>d[i]; } double ans=1.0; for(int i=0;i<m;i++){ ans*=p[d[i]]/100; } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
変わったサイコロ (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 変わったサイコロ (3) https://algo-method.com/tasks/761 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,x; cin>>n>>x; vector<double> p(n+1); for(int i=1;i<=n;i++){ cin>>p[i]; } double ans=0.0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i+j==x){ ans+=((p[i]/100)*(p[j]/100)); } } } cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
くじ引き (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (3) https://algo-method.com/tasks/766 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ int n; cin>>n; ld num=(ld)(n-1)/n; ld ans=1-num*num; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
同じ誕生日 (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 同じ誕生日 (1) https://algo-method.com/tasks/765 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ int n; cin>>n; ld num=1.0; for(int i=0;i<n;i++){ num*=364.0/365.0; } ld ans=1-num; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
くじ引き (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (4) https://algo-method.com/tasks/771 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ int n; cin>>n; ld num=1.0; for(int i=0;i<n;i++){ num*=1.-1./n; } ld ans=1.0-num; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
コイントス (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 コイントス (2) https://algo-method.com/tasks/767 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; 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,m; cin>>n>>m; ll cnt=combination(n,m); ll all=twoPOW(n); double ans=(double)cnt/all; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
コイントス (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 コイントス (3) https://algo-method.com/tasks/774 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; 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,m,p; cin>>n>>m>>p; ll cnt=combination(n,m); double num=1.0; for(ll i=0;i<m;i++){ num*=(double)p/100; } for(ll i=0;i<n-m;i++){ num*=1.0-(double)p/100; } double ans=num*cnt; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
くじ引き (5)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (5) https://algo-method.com/tasks/775 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n,k; cin>>n>>k; cout<<fixed<<setprecision(10)<<k/n<<endl; return 0; }
くじ引き (6)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (6) https://algo-method.com/tasks/778 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n,k; cin>>n>>k; double ans=1.0/n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
同じ誕生日 (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 同じ誕生日 (2) https://algo-method.com/tasks/764 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ int n; cin>>n; ld num=1.0; for(int i=0;i<n;i++){ num*=(ld)(365-i)/365; } ld ans=1.0-num; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
出目の範囲
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 出目の範囲 https://algo-method.com/tasks/780 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,x; cin>>n>>x; ld num=x/6.0; ld ans=pow(num,n); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
サイコロの最大値
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 サイコロの最大値 https://algo-method.com/tasks/781 提出コードの解答例 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; ld num1=m/6.0; ld num2=(m-1)/6.0; ld ans=pow(num1,n)-pow(num2,n); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
コイントス (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 コイントス (4) https://algo-method.com/tasks/782 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; 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,m; cin>>n>>m; if((n+m)%2){ cout<<0<<endl; return 0; } ll front=(n+m)/2,back=(n-m)/2; ll cnt=combination(n,front); ll all=twoPOW(n); long double ans=(long double)cnt/all; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
2つの袋とボール (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 2つの袋とボール (1) https://algo-method.com/tasks/787 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld x,y; cin>>x>>y; ld ans=x/(x+y); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
2つの袋とボール (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 2つの袋とボール (2) https://algo-method.com/tasks/788 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,m,x,y; cin>>n>>m>>x>>y; ld r0=n*(x/100),r1=m*(y/100); ld ans=r0/(r0+r1); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
2つの袋とボール (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 2つの袋とボール (3) https://algo-method.com/tasks/789 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,x,y; cin>>n>>x>>y; ld r0=n*x/100,r1=(100-n)*y/100; ld ans=r0/(r0+r1); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
検査の精度
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 検査の精度 https://algo-method.com/tasks/790 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,x; cin>>n>>x; ld a=n*x/100,b=(100-n)*(100-x)/100; ld ans=a/(a+b); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
データの誤り (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 データの誤り (1) https://algo-method.com/tasks/792 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld x; cin>>x; ld ans=(100-x)/100; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
データの誤り (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 データの誤り (2) https://algo-method.com/tasks/791 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld x; cin>>x; ld ans=(100-x)*(100-x)/(x*x+(100-x)*(100-x)); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
2つの袋とボール (4)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 2つの袋とボール (4) https://algo-method.com/tasks/793 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld n,m,x,y; cin>>n>>m>>x>>y; ld ans=x/(x+y); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
モンティ・ホール問題
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 モンティ・ホール問題 https://algo-method.com/tasks/769 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld ans1=(ld)2.0/3.0,ans2=(ld)1.0/3.0; cout<<fixed<<setprecision(10)<<ans1<<endl<<ans2<<endl; return 0; }
くじ引き (Ex)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 くじ引き (Ex) https://algo-method.com/tasks/779 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n,m,k; cin>>n>>m>>k; double ans=m/n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
データの誤り (Ex)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(8) 確率 データの誤り (Ex) https://algo-method.com/tasks/794 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld x; cin>>x; ld p=x/100; ld ans=pow(1-p,3)+3*p*pow(1-p,2); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com