模拟/数学/sgu123 The sum
题意
求斐波那契数列前n项和
分析
1.因为数据较小,直接算出来相加可过
2.有结论:s[n]=f[n+2]-1
利用数学归纳法,证明如下:
1)当n=1时,s[1]=f[1]=1,f[1+2]-1=1,所以s[1]=f[3]-1;
2)假设n=k(k>=1)时,命题成立
则有s[k]=f[1]+f[2]+……+f[k]=f[k+2]-1=f[k]+f[k+1]-1
则当n=k+1时,s[k+1]=(f[1]+f[2]+……+f[k])+f[k+1]
=f[k]+f[k+1]+f[k+1]-1
=f[k+2]+f[k+1]-1
=f[k+3]-1
∴n=k+1时,命题成立
综上,s[n]=f[n+2]-1
Accepted Code
1 /* 2 PROBLEM:sgu123 3 AUTHER:Rinyo 4 MEMO:模拟 5 */ 6 7 8 #include<cstdio> 9 int f[45]; 10 11 int main() 12 { 13 int n,ans=0; 14 scanf("%d",&n); 15 f[1]=f[2]=1; 16 for (int i=3;i<=n+2;i++) f[i]=f[i-1]+f[i-2]; 17 for (int i=1;i<=n;i++) ans+=f[i]; 18 printf("%d\n",ans); 19 // printf("%d\n",f[n+2]-1); //利用结论 20 return 0; 21 }