x^n+y^n求解(xdoj 1115)

上題:西電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了好幾發,嗚嗚哭死。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章