アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
面積を求める (1)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 面積を求める (1) https://algo-method.com/tasks/602 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll n; cin>>n; ll ans=0; for(ll i=1;i<=n;i++){ ans+=i; } cout<<ans<<endl; return 0; }
面積を求める (2)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 面積を求める (2) https://algo-method.com/tasks/603 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll l,r,a,b; cin>>l>>r>>a>>b; ll ans=0; for(ll i=l;i<r;i++){ ans+=a*i+b; } cout<<ans<<endl; return 0; }
面積を求める (3)
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 面積を求める (3) https://algo-method.com/tasks/604 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; int main(void){ ld a,b,h; cin>>a>>b>>h; for(int i=0;i<=5;i++){ ld n=pow(10,i); ld ans=0; for(int x=0;x<n;x++){ ld S=(a+(b-a)/n*x)*(h/n); ans+=S; } cout<<fixed<<setprecision(10)<<ans<<endl; } return 0; }
円周率を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 円周率を求める https://algo-method.com/tasks/606 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ld=long double; ld f(ld x){ return sqrt(1-x*x); } int main(void){ ld n; cin>>n; ld S=0; for(int x=0;x<n;x++){ ld num=f(x/n)*(1/n); S+=num; } double ans=S*4; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
微分の逆操作
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 微分の逆操作 https://algo-method.com/tasks/690 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<int> a(n+1); for(int i=0;i<=n;i++){ cin>>a[i]; } vector<int> b(n+2); for(int i=0;i<=n+1;i++){ if(i==0){ b[i]=0; }else{ b[i]=a[i-1]/i; } } for(int i=0;i<=n+1;i++){ cout<<b[i]<<((i==n+1) ? "\n" : " "); } return 0; }
三角形の面積を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 三角形の面積を求める https://algo-method.com/tasks/691 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int d,h; cin>>d>>h; cout<<d*h/2<<endl; return 0; }
円錐の体積を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 円錐の体積を求める https://algo-method.com/tasks/692 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int d,h; cin>>d>>h; cout<<d*h/3<<endl; return 0; }
円の面積を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 円の面積を求める https://algo-method.com/tasks/693 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int r; cin>>r; cout<<r*r<<endl; return 0; }
発展: 球の体積を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 発展: 球の体積を求める https://algo-method.com/tasks/698 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double r; cin>>r; double ans=(double)4/3*pow(r,3); cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
発展: 球の表面積を求める
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 発展: 球の表面積を求める https://algo-method.com/tasks/699 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int r; cin>>r; int ans=4*r*r; cout<<ans<<endl; return 0; }
発展: ガブリエルのラッパ
/* C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法 発展: ガブリエルのラッパ https://algo-method.com/tasks/700 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ double n; cin>>n; double ans=(double)1-1/n; cout<<fixed<<setprecision(10)<<ans<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com