Another kind of Fibonacci 代码写法

Problem Description
As we all known , the Fibonacci series : F(0) = 1, F(1) = 1, F(N) = F(N - 1) + F(N - 2) (N >= 2).Now we define another kind of Fibonacci : A(0) = 1 , A(1) = 1 , A(N) = X * A(N - 1) + Y * A(N - 2) (N >= 2).And we want to Calculate S(N) , S(N) = A(0)2 +A(1)2+……+A(n)2.

Input
There are several test cases.
Each test case will contain three integers , N, X , Y .
N : 2<= N <= 231 – 1
X : 2<= X <= 231– 1
Y : 2<= Y <= 231 – 1

Output
For each test case , output the answer of S(n).If the answer is too big , divide it by 10007 and give me the reminder.

Sample Input
2 1 1
3 2 3

Sample Output
6
196

#include
#include
const int N=1000000+5;
using namespace std;
long long f[N];
int main()
{
int n;
f[0]=7%3;
f[1]=11%3;
for(int i=2;i<=1000000;i++)
f[i]=(f[i-1]+f[i-2])%3;
while(scanf("%d",&n)!=EOF)
{
if(f[n]==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}