您的位置:首页 > 其它

HDU - 4569(思维、暴力)

2018-01-23 14:58 423 查看
/*

    HDU - 4569

    题意大体是

    f(x) = an*x^n+...+a1*x +a0

    告诉你n,an到a0

    问是否存在x满足

    f(x)≡0mod(p*p)

    解题思路大体是

    因为f(x)%(p*p)=0

    所以f(x)%p=0

    所以我们先暴力枚举

    找到满足f(x)%p=0的x

    又根据取余性质当x满足f(x)%p=0时

    f(x+k*p)%p=0也一定满足

    所以我们需要在x+k*p中找到满足f(x+k*p)%(p*p)=0

    此时x+k*p就是答案

*/

#include <iostream>

#include <stdio.h>

#define ll long long

using namespace std;

int a[10];

int deg;

ll f(int x)

{

    ll ans=0;

    ll res=1;

    for(int i=0;i<=deg;i++)

    {

       ans+= a[i]*res;

       res*=x;

    }

    return ans;

}

int main()

{

    int t;

    scanf("%d",&t);

    for(int k=1;k<=t;k++)

    {

        scanf("%d",°);

        for(int i=deg;i>=0;i--)

            scanf("%d",&a[i]);

        int p;

        scanf("%d",&p);

        int cnt;

        for(int i=0;i<=p;i++)

        {

            if(f(i)%p==0)

            {

                cnt=i;

                break;

            }

        }

        int pri=p*p;

        int flag=0;

        for(int i=cnt;i<=pri;i+=p)

        {

            if(f(i)%pri==0)

            {

                printf("Case #%d: %d\n",k,i);

                flag++;

                break;

            }

        }

        if(!flag)

            printf("Case #%d: No solution!\n",k);

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: