/*
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;
}
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;
}