C++正经题解 100%AC
2025-12-20 16:45:22
发布于:安徽
2阅读
0回复
0点赞
来看一下规律:
f[1]=1
f[2]=2
f[3]=2
f[4]=4
f[5]=4
f[6]=6
f[7]=6
f[8]=10
f[9]=10
f[10]=14
f[11]=14
首先,在进行操作时,只能在前面加不大于一半的数,所以一半及以下的数就可以加在前面,得到:
f【n】=f【n//2】+f【n//2-1】+f【n//2-2】······+f【1】
因为奇数(2n+1)整除二的结果 和上一个数(偶数2n)整除二的结果相同,所以:
f【x】=f【x-1】(这里的x是奇数)
那么, 上代码吧:
#include<iostream>
using namespace std;
int main(){
int n;int a[1010]{0,1};cin>>n;if(n==1)cout<<1;
else{
for(int i=2;i<=n;i++){
if(i%2==1){a[i]=a[i-1];}
else{
for(int j=i/2;j>=1;j--){
a[i]+=a[j];
}a[i]++;
}
}
cout<<a[n];
}
return 0;
}
这里空空如也







有帮助,赞一个