1. 程式人生 > >NOIP2001數的計算(普及組T1)————數學,遞迴,遞推

NOIP2001數的計算(普及組T1)————數學,遞迴,遞推

題解:本題可尋找規律,a(i)(偶數)=a(i-1)+a(i/2),a(i)(奇數)=a(i-1)
程式碼如下:

#include<iostream>
using namespace std;
int a[100000]={0,1};
int main()
{
   int n;
   cin>>n;
   for(int i=2;i<=n;i++)
   {
    if(i%2==0)a[i]=a[i-1]+a[i/2];
    else a[i]=a[i-1];
   }
   cout<<a[n];
   return 0;
}