寝癖頭の解法

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

paizaラーニング: C++による「Cランクレベルアップメニュー 」問題集: シミュレーション

paizaラーニングのレベルアップ問題集「Cランクレベルアップセット」からの出典です。
paiza.jp
C++による「Cランクレベルアップメニュー 」問題集: シミュレーションと、それらの提出コードの解答例です。

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

・STEP: 1 条件を満たす最小の自然数

/*
C++による「シミュレーション」問題集
STEP: 1  条件を満たす最小の自然数
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int ans=0;
    for(int i=10000; ;i++){
        if(i%13==0){
            ans=i;
            break;
        }
    }
    cout<<ans<<endl;
    return 0;
}

・STEP: 2 シミュレーションの練習

/*
C++による「シミュレーション」問題集
STEP: 2 シミュレーションの練習
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    int n,a,b;
    cin>>n>>a>>b;
    int paiza=1;
    int kyouko=1;
    int cnt=0;
    while(1){
        kyouko+=(paiza*a);
        paiza+=(kyouko%b);
        cnt++;
        if(kyouko>n){
            break;
        }
    }
    cout<<cnt<<endl;
    return 0;
}

・FINAL問題: シミュレーション

/*
C++による「シミュレーション」問題集
FINAL問題: シミュレーション
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>;
using namespace std;
int fib(int n){
    if(n==0){
        return 0;
    }else if(n<5){
        return 1;
    }else if(n%2==1){
        return fib(n-1)+fib(n-3);
    }else{
        return fib(n-3)+fib(n-3)+fib(n-5);
    }
}
int main(void){
    int h;
    cin>>h;
    int cnt=0;
    for(int i=0;h>0;i++){
        if(i%2==0){
            h-=fib(i);
            ++cnt;
        }
    }
    cnt-=1;
    cout<<cnt<<endl;
    return 0;
}

paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。