您的位置:首页 > 其它

....

2015-08-15 16:07 337 查看
C - 道
Time Limit:1000MS    Memory Limit:262144KB    64bit IO Format:%I64d & %I64u
SubmitStatusPracticeCodeForces
450B

Description

Jzzhu 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 Input

Input
2 3
3


Output
1


Input <
4000
/div>
0 -12


Output
1000000006


Hint

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).

这道题在比赛的时候没有做出来  是因为刚开始一直在想着能不能用(a+b)%c=(a%c)%(b%c)的变形   没有往几个数一循环这方面想 这个题就是6个数一循环  

注意::《负数对某个数取余》

代码:

#include<stdio.h>

#include<string.h>

#define INF 1000000007

int main()

{

    long long n,m,s[10];

    int i;

    while(~scanf("%lld %lld",&n,&m))

    {

        s[1]=n;

        s[2]=m;

        for(i=3;i<=5;i++)

        {

            s[i]=s[i-1]-s[i-2];

        }

        s[0]=s[5]-s[4];///是s[0] 不是s[6].因为下面是取余

        scanf("%lld",&n);

        int k;

        k=n%6;

        if(s[k]>=0)

        {

            printf("%lld\n",s[k]%INF);

        }

        else

        {

            while(s[k]<0) ///负数

            {

                s[k]=s[k]+INF;

            }

            printf("%lld",s[k]%INF);

        }

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: