洛谷 P2312 解方程
来源:互联网 发布:微软软件正版化 编辑:程序博客网 时间:2024/05/19 06:36
题目描述
已知多项式方程:
a0+a1x+a2x^2+..+anx^n=0
求这个方程在[1, m ] 内的整数解(n 和m 均为正整数)
【题目分析】
枚举几个质数取模暴力。
【代码】
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;int n,m,len,ans=0;int pri[]={0,22877,21893,14843};int a[4][101];int can[4][25001];char s[10001];int main(){ scanf("%d%d",&n,&m); for (int i=0;i<=n;++i) { int flag=0; scanf("%s",s); len=strlen(s); if (s[0]=='-') flag=1,s[0]='0'; for (int j=0;j<len;++j) for (int k=1;k<=3;++k) { a[k][i]*=10; a[k][i]+=s[j]-'0'; a[k][i]%=pri[k]; } if (flag) for (int j=1;j<=3;++j) a[j][i]*=-1; } for (int i=1;i<=3;++i) { for (int j=0;j<pri[i];++j) { int tmp=a[i][n]; for (int k=n-1;k>=0;--k) { tmp*=j; tmp+=a[i][k]; tmp%=pri[i]; } if (tmp==0) can[i][j]=1; } } for (int i=1;i<=m;++i) { int flag=1; for (int j=1;j<=3;++j) if (!can[j][i%pri[j]]) flag=0; if (flag) ans++; } printf("%d\n",ans); for (int i=1;i<=m;++i) { int flag=1; for (int j=1;j<=3;++j) if (!can[j][i%pri[j]]) flag=0; if (flag) printf("%d\n",i); }}
0 0
- 洛谷 P2312 解方程
- 洛谷 P2312 解方程
- 洛谷 P2312 解方程
- 解方程 洛谷p2312
- 洛谷 P2312 解方程
- 【bzoj3751】【洛谷P2312】【NOIP2014】解方程
- 洛谷 P2312 [NOIP2014 D2T3] 解方程
- 数学——洛谷 P2312 解方程
- 洛谷P2312:解方程 (Hash+数学)
- 洛谷P2312 解方程(NOIp2014)
- [P2312][NOIP2014]解方程
- 刷题记录-P2312 解方程
- 洛谷1771 方程的解
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- Raucous Rockers_usaco3.4.4
- Android Studio常用快捷键
- 行内元素、块元素和css属性display
- mybatis返回Map<String, Object>
- android开发 handler的延迟发送,与回收
- 洛谷 P2312 解方程
- 深度学习中的数学与技巧(10):PCA的数学原理
- ECharts, PHP, MySQL, Ajax, JQuery 实现前后端数据可视化
- CSS3不得不说的分栏
- Activity的启动模式与startActivityForResult的关系
- 欢迎使用CSDN-markdown编辑器
- iOS 加载本地HTML,css,js
- Javascript对象 、本地对象、内置对象和宿主对象
- 几种我常用的元素居中总结