寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

アルゴ式(beta版): C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法

アルゴ式(beta版)の「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分法からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。

C++による「設計技法とデータ構造 (#毎日アルゴ式)」プログラミングで学ぶ数学(6) 積分

僕が作成、提出したコードは、以下のとおりです。

面積を求める (1)

algo-method.com

/*
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)

algo-method.com

/*
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)

algo-method.com

/*
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;
}
円周率を求める

algo-method.com

/*
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;
}
微分の逆操作

algo-method.com

/*
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;
}
三角形の面積を求める

algo-method.com

/*
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;
}
円錐の体積を求める

algo-method.com

/*
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;
}
円の面積を求める

algo-method.com

/*
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;
}
発展: 球の体積を求める

algo-method.com

/*
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;
}
発展: 球の表面積を求める

algo-method.com

/*
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;
}
発展: ガブリエルのラッパ

algo-method.com

/*
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