https://www.luogu.com.cn/problem/P1028
- 这不是一个暴力题,如果暴力来做会TLE,所以需要找出规律递归
#include<iostream>
#include<cmath>
using namespace std;
int f[1005];
int shu(int n)
{
return floor(n*1.0/2);
}
int main()
{
int n;cin >> n;
f[0] = f[1] = 1;
for(int i = 2;i <= n;i++)
{
if(i%2)
f[i] = f[i-1];
else
{
f[i] = f[i-1]+f[i/2];
}
}
cout << f[n];
}
我们代入试试就可以知道:
当n为奇数,f[i] = f[i-1]
当n为偶数,f[i] = f[i-1]+f[i/2]
并且容易得出f[0] = f[1] = 1;就可以递归出其他的数值啦