NOJ1185 数列之和

//值得注意的是,这段代码写于学习的早期时段,对语言和编译器的理解并不充分,为了装B使用了位异或的交换写法。emon的这篇文章里有写到这样做的劣处,如果有幸看到这个,可以前往学习一波。

#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)!=-1)
    {
		n %= 1200;
		printf("%ld\n",s[n]);
	}
}

NOJ1185 数列之和》有1个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注