アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法
僕が作成、提出したコードは、以下のとおりです。
面積を求める (1)
algo-method.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)
algo-method.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)
algo-method.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;
}
円周率を求める
algo-method.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;
}
algo-method.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;
}
三角形の面積を求める
algo-method.com
#include<bits/stdc++.h>
using namespace std;
int main(void){
int d,h;
cin>>d>>h;
cout<<d*h/2<<endl;
return 0;
}
円錐の体積を求める
algo-method.com
#include<bits/stdc++.h>
using namespace std;
int main(void){
int d,h;
cin>>d>>h;
cout<<d*h/3<<endl;
return 0;
}
円の面積を求める
algo-method.com
#include<bits/stdc++.h>
using namespace std;
int main(void){
int r;
cin>>r;
cout<<r*r<<endl;
return 0;
}
発展: 球の体積を求める
algo-method.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;
}
発展: 球の表面積を求める
algo-method.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;
}
発展: ガブリエルのラッパ
algo-method.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