[NOIP2001 普及组] 数的计算
题目链接 https://www.luogu.com.cn/problem/P1028
好吧我承认,真的很水......
数学思想+递推,浅浅推导一下就出来了:
a[1]=1 a[2]=2 a[3]=2 a[4]=4 a[5]=4 a[6]=6 a[7]=6 a[8]=10 a[9]=10 a[10]=14 a[11]=14 ……
当i为偶数时:a[i]=a[i-1]+a[i/2]
当i为奇数时:a[i]=a[i-1] (i=1除外)
放AC代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int a[1010]; 5 int main() 6 { 7 ios::sync_with_stdio(false); 8 cin>>n; 9 a[0]=a[1]=1; 10 for(int i=2;i<=n;i++){ 11 if(i%2==0) a[i]=a[i-1]+a[i/2]; 12 else a[i]=a[i-1]; 13 } 14 cout<<a[n]; 15 return 0; 16 }
end