codeforces 257div2 B. Jzzhu and Sequences(细节决定一切)

题目链接:http://codeforces.com/contest/450/problem/B

解题报告:f1 = x,f2 = y,另外有当(i >= 2) fi = fi+1 + fi-1,现在给出x和y,k,让你输出fn % (1e9+7)

对于这题我真想说细节决定一切,f的值一共只有6个,只要把f的值全部打表打出来了就可以直接得出任何一个fk的值。

但是注意x和y的范围都是小于10^9,所以当(x+y) % MOD的时候就会可能出现还是负数的情况,所以说交题之前最好测下极端的情况,因为错误往往是在这些地方犯的。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 typedef long long INT;
 7 INT ans[10];
 8 const INT MOD = 1000000007;
 9 void dabiao(INT x,INT y)
10 {
11     x = (x + MOD) % MOD;     //先单个分别对x,y处理就不会出现取模之后还是负数的情况
12     y = (y + MOD) % MOD;
13     ans[0] = x;
14     ans[1] = y;
15     ans[2] = (y - x + MOD) % MOD;
16     ans[3] = (-1 * x + MOD) % MOD;
17     ans[4] = (-1 * y + MOD) % MOD;
18     ans[5] = (x - y + MOD) % MOD;
19 }
20 int main()
21 {
22     INT x,y,n;
23     while(scanf("%lld%lld%lld",&x,&y,&n)!=EOF)
24     {
25         dabiao(x,y);
26         printf("%lld\n",ans[(n - 1) % 6]);
27     }
28     return 0;
29 }
View Code
posted @ 2014-07-20 08:30  xiaxiaosheng  阅读(160)  评论(0编辑  收藏  举报