P1028 数的计算(洛谷)

原题传送门

在这里插入图片描述
思路:列举出前几个例子m[1]=1, m[2]=2, m[3]=2, m[4]=4就不难看出m[n]=m[1]+…+m[n/2]+1这样的规律来,因此用递推的思路来做即可

代码参考

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1001;
int m[MAXN],n;
int main(){
    
    
    cin>>n;
    //从1-n按规律递推
    for(int i = 1;i <= n;i++){
    
    
        for(int j = 1;j <= i/2;j++)
            m[i]+=m[j]; 
    m[i]++;//加上自然数自身
    }
    cout<<m[n];
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Bertil/article/details/106818288
今日推荐