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就可以了。。
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; }
相关文章推荐
- RedHat设置Yum源
- Oracle修改字段类型、注释、字段名称
- QT写的贪吃蛇
- 我要参加这件事吗?
- KVC KVO
- 在CentOS 7上构建RAID5、LVM和SAMBA服务器(1)——预备
- Codeforces Round #345 (Div. 2) B. Beautiful Paintings __ greedy and Bucket_sort
- ios - 文件保存路径的获取
- 简单水平菜单的制作
- 51nod1242 斐波那契数列 矩阵快速幂
- java初始化顺序
- 移动销售端app的需求分析
- 程序员之“盲人摸太阳”
- AutoCompleteTextView练习,重点为适配器设置
- 京东2016笔试题
- eclipse启动问题
- 在eclipse mars(4.5)安装 veloeclipse 插件
- HDU 4081 次小生成树模板题
- NYOJ 又见拦截导弹
- MPU6050 dmp 无法测得数据的问题