B. Jzzhu and Sequences
time limit per test
1 secondmemory limit per test
256 megabytesinput
standard inputoutput
standard outputJzzhu has invented a kind of sequences, they meet the following property:
You are given x and y, please calculate fn modulo 1000000007 (109 + 7).
Input
The first line contains two integers x and y (|x|, |y| ≤ 109). The second line contains a single integer n (1 ≤ n ≤ 2·109).
Output
Output a single integer representing fn modulo 1000000007 (109 + 7).
Sample test(s)
input
2 3
3
output
1
input
0 -1
2
output
1000000006
Note
In the first sample, f2 = f1 + f3, 3 = 2 + f3, f3 = 1.
In the second sample, f2 = - 1; - 1 modulo (109 + 7) equals (109 + 6).
----------------------------------------------------------------------------
题意就不说了,找最小循环节点,就是6
然后注意数组要从0开始,并且负数取余要让它加上一个整数(1000000007)然后再取余,就没什么了
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <iostream> 4 #include <algorithm> 5 #include <math.h> 6 7 int main() 8 { 9 long long n,m,i,j,k,t; 10 long long str[7]; 11 while(scanf("%I64d%I64d",&n,&m)!=EOF) 12 { 13 scanf("%I64d",&t); 14 str[0]=(n+1000000007)%1000000007; 15 str[1]=(m+1000000007)%1000000007; 16 for(i=2;i<6;i++) 17 { 18 str[i]=(str[i-1]-str[i-2]);//printf("%I64d*",t%6); 19 } 20 printf("%I64d\n",(str[(t-1)%6]+1000000007)%1000000007); 21 //else 22 //printf("%I64d\n",str[t%6]%1000000007); 23 } 24 return 0; 25 }