HDU 4569 Special equations

题解:

如果x满足f(x)%(pri*pri)==0,那么一定有f(x)%p==0,那么一定会有f(x+p)%pri==0,于是可以先找到0到prime中满足f(x)%p==0的x,然后从x开始遍历到pri*pri,每次遍历+pri,如果有满足f(i)%(pri*pri)存在,输出i即可

#include 
#include 
#include 
#define ll long long

using namespace std;

int T,deg,a[5],pri;

ll cal(ll k,ll mod)
{
    ll ans=0,tmp=1;
    for(int i=0;i<=deg;i++)
    {
        ans=(ans+a[i]*tmp)%mod;
        tmp=tmp*k%mod;
    }
    return (ans%mod+mod)%mod;
}

int main()
{
    //freopen("G:\\input.txt","r",stdin);

    scanf("%d",&T);

    int cas=0;

    while(T--)
    {
        scanf("%d",°);
        for(int i=deg;i>=0;i--)
            scanf("%d",a+i);
        scanf("%d",&pri);
        bool flag=0;

        for(int k=0;k


 
  

你可能感兴趣的:(HDU 4569 Special equations)