上題:西電oj 1115 : http://acm.xidian.edu.cn/problem.php?id=1115
設 a=x+y ,b=x*y
如果你想把x和y分別求出來,那你就輸了。。。
本人歷經千辛萬苦,花費了大量比賽時的寶貴時間,用完了一沓草稿紙。。終於。。。。。。。還是沒把它推出來。。。。
比賽結束得到某大神指點豁然開朗。。。膜拜一下,漂亮的結果!
f(1)=a
f(2)=a^2+b
f(3)=a^3-3*a*b=a*f(2)-b*f(1)
…
f(n)=a*f(n-1)-b*f(n-2)
好了上代碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long int A,B,n;
while(scanf("%lld %lld %lld",&A,&B,&n)!=EOF)
{
long long int sum=1,m1=A%1000000007,m2=(A*A%1000000007-2*B%1000000007)%1000000007;
if(n==1)
printf("%lld\n",m1%1000000007);
else if(n==2)
printf("%lld\n",m2%1000000007);
else
{
for(int i=3;i<=n;i++)
{
sum=(A*m2%1000000007-B*m1%1000000007+1000000007)%1000000007;
m1=m2%1000000007;
m2=sum%1000000007;
}
printf("%lld\n",sum%1000000007);
}
}
return 0;
}
mod mod mod 注意mod ,因爲這個mod wa了好幾發,嗚嗚哭死。。