[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

 

posted @ 2022-03-26 10:51  爱吃虾滑  阅读(42)  评论(0编辑  收藏  举报