题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2709
解题思路:这是一道递推的题目,规律从1开始,依次为1 2 2 4 4 6 6 10 10 14 14 20 20 26 26 36 36 46 46 60 60 74......
由此可得递推公式:a[ i ]=(a[ i-1 ]+a[ i/2 ]) % mod ; (mod=1e9)
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,a[1000010]; 4 int main() 5 { 6 a[1]=1,a[2]=2; 7 for(int i=3;i<1000010;i++){ 8 if(i%2)a[i]=a[i-1]%1000000000;//奇数项 9 else a[i]=(a[i-2]+a[i/2])%1000000000;//偶数项 10 } 11 while(cin>>n) 12 cout<<a[n]<<endl; 13 return 0; 14 }