南邮 OJ 1185 数列之和

数列之和

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 868            测试通过 : 74 

比赛描述

斐波那契数列(Fibonacci Sequence)的定义如下:

F1 = 1 F2 = 1

Fn = Fn - 1 + Fn - 2

那么你能得到斐波那契数列之和吗?

即Sn=F1+F2+F3+…+Fn

输入

输入数据有多组,每组为一行,为一个正整数n(1<=n<=2^31-1)

输出

每组输出对应一行,一个正整数,表示前n项斐波那契数列之和(为了防止高精度计算,对结果模除32767即可)

样例输入

3

样例输出

4

提示

 

题目来源

李鸿斌(honghu)



#include<stdio.h>
long s[1200];
int main(){
	long n,a=2,b=3;
	s[0] = 0;
	s[1] = 1;
	s[2] = 2;
	for(n=3;n<1200;++n){
		a ^= b;
		b ^= a;
		a ^= b;
		b += a;	
		b %= 32767;
		s[n] = b-1;
		if(s[n]<0){
			s[n] = 32766;
		}
	}
	while(scanf("%ld",&n)!=EOF){
		n %= 1200;
		printf("%ld\n",s[n]);
	}
}





你可能感兴趣的:(ACM,南邮OJ)