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 

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了好几发,呜呜哭死。。

你可能感兴趣的:(xdoj,acm水题)