//值得注意的是,这段代码写于学习的早期时段,对语言和编译器的理解并不充分,为了装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个想法