题目链接:http://codeforces.com/contest/450/problem/B
思路:当看到这个数列时我的第一感觉就是找公式,但是找啦一会没找出来,于是就想可能是找规律,就把测试数据继续写下去,发现这是一个周期为6的周期数列
code
#include<cstdio>
#include<iostream>
#define m 1000000007
using namespace std;
int main()
{
__int64 f[10];
while(scanf("%I64d%I64d",&f[1],&f[2])==2)
{
int k;
int i;
scanf("%d",&k);
k=k%6;
if(k==0) k=6; //注意这个要重新赋值的
f[1]=(f[1]+m)%m;
f[2]=(f[2]+m)%m;
for(i=3;i<=6;i++)
{
f[i]=(f[i-1]-f[i-2]+m)%m;
//printf("%I64d ",f[i]);
}
printf("%I64d\n",f[k]);
}
return 0;
}