其他分享
首页 > 其他分享> > 洛谷 P1028 [NOIP2001 普及组] 数的计算

洛谷 P1028 [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

 

标签:10,洛谷,NOIP2001,int,很水,false,P1028,14
来源: https://www.cnblogs.com/marswithme/p/16057972.html