您的位置:首页 > 其它

HDU4569-Special equations-小优化简单题

2016-04-08 21:21 211 查看
求是否有x满足 f(x) = anxn +...+
a1x +a0 的值mod pri*pri为0

其中pri<10000 则pri*pri<100000000 注意到只要存在x,则x mod pri*pri也肯定满足这个式子 但是直接枚举有10的8次。这时我们需要小小的优化一下。(其实优化很大

如果这个值mod pri*pri为0则这个数mod pri肯定为0。所以我们先找那些数mod pri为0 然后在将他加不断加pri就可以了。。

#include<bits/stdc++.h>
using namespace std;
int t;
long long m,mm;
int n;
int kase=0;
int fa;
long long a[10];
long long sov(long long x,long long mod) {
long long ans=a
;
for(int i=n;i>=1;i--) {
ans=(ans*x+a[i-1]);
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
for(int i=n;i>=0;i--) {
scanf("%lld",&a[i]);
}
scanf("%lld",&m);
mm=m*m;
fa=0;
for(long long i=0;i<m;i++) {
long long xx=sov(i,m);
if(xx%m==0) {
//    cout << "xx=" << xx << "i=" << i << endl;
for(long long j=i;j<mm;j+=m) {
long long yy=sov(j,m);
// cout << "yy=" << yy << endl;
if(yy%mm==0) {
//    cout << "yy=" << yy << "j=" << j << endl;
printf("Case #%d: %lld\n",++kase,j);
fa=1;
break;
}
}
}
if(fa==1) break;
}
if(fa==0) {
printf("Case #%d: No solution!\n",++kase);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: