10.24T3 解方程 取模意义下运算+秦九韶算法
#1228 解方程
描述
已知多项式方程:
a0+a1x+a2x^2+..+anx^n=0
求这个方程在[1, m ] 内的整数解(n 和m 均为正整数)
输入
输入共n + 2 行。
第一行包含2 个整数n 、m ,每两个整数之间用一个空格隔开。
接下来的n+1 行每行包含一个整数,依次为a0,a1,a2..an
输出
第一行输出方程在[1, m ] 内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m ] 内的一个整数解。
样例输入[复制]
2 10
1
-2
1
输入样例#2:
2 10
2
-3
1
输入样例#3:
2 10
1
3
2
样例输出[复制]
1
1
输出样例#2:
2
1
2
输出样例#3:
0
提示
对于30%的数据:0<n<=2,|ai|<=100,an!=0,m<100
对于50%的数据:0<n<=100,|ai|<=10^100,an!=0,m<100
对于70%的数据:0<n<=100,|ai|<=10^10000,an!=0,m<10000
对于100%的数据:0<n<=100,|ai|<=10^10000,an!=0,m<1000000
由于在取模意义下解的结果是不会变化的,所以我们就可以随便选两个质数来保证解的唯一性
如果我们找到了一个非解,那么根据同余的性质它加上模数的倍数肯定也不是解
所以我们就可以直接做下来了
code:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 const long long mod1=117431; 6 const long long mod2=102437; 7 string a[1000]; 8 long long n,m,c[1005],b[100005],vis[2000005]; 9 long long QJS(long long x,int mod) { 10 long long temp=b[1]; 11 for(long long i=1; i<=n; i++) { 12 temp=(temp*x+b[i+1])%mod; 13 } 14 // if(x==1)cout<<"temp="<<temp<<"\n"; 15 return temp; 16 } 17 long long QJS2(long long x,int mod) { 18 long long temp=c[1]; 19 for(long long i=1; i<=n; i++) { 20 temp=(temp*x+c[i+1])%mod; 21 } 22 // if(x==1)cout<<"TEMP="<<temp<<"\n"; 23 return temp; 24 } 25 long long Ans[1000005]; 26 int pre1(string k) { 27 int x=0,f=1,st=0; 28 if(k[0]=='-')f=-1,st=1; 29 for(int i=st; i<k.size(); i++) { 30 x=(x<<3)+(x<<1)+k[i]-'0'; 31 x%=mod1; 32 } 33 return x*f; 34 } 35 int pre2(string k) { 36 int x=0,f=1,st=0; 37 if(k[0]=='-')f=-1,st=1; 38 for(int i=st; i<k.size(); i++) { 39 x=(x<<3)+(x<<1)+k[i]-'0'; 40 x%=mod2; 41 } 42 return x*f; 43 } 44 int main() { 45 // freopen("equation8.in","r",stdin); 46 cin>>n>>m; 47 for(long long i=1; i<=n+1; i++) { 48 cin>>a[n+2-i]; 49 } 50 for(int i=1; i<=n+1; i++) { 51 b[i]=pre1(a[i]); 52 c[i]=pre2(a[i]); 53 } 54 long long ans=0; 55 int p[3]; 56 p[1]=mod1,p[2]=mod2; 57 for(int i=1; i<=2; i++) { 58 for(int x=0; x<p[i]; x++) { 59 if(i==1) { 60 if(QJS(x,p[i])==0) { 61 for(int j=x; j<=m; j+=p[i]) { 62 if((++vis[j])==2) { 63 Ans[++ans]=j; 64 } 65 } 66 } 67 } else { 68 if(QJS2(x,p[i])==0) { 69 for(int j=x; j<=m; j+=p[i]) { 70 if((++vis[j])==2) { 71 Ans[++ans]=j; 72 } 73 } 74 } 75 } 76 } 77 } 78 sort(Ans+1,Ans+ans+1); 79 cout<<ans<<'\n'; 80 for(long long i=1; i<=ans; i++) { 81 cout<<Ans[i]<<'\n'; 82 } 83 return 0; 84 }
over
转载于:https://www.cnblogs.com/saionjisekai/p/9847641.html
10.24T3 解方程 取模意义下运算+秦九韶算法相关推荐
- 模意义下的FFT算法
//写在前面 单就FFT算法来说的话,下面只给出个人认为比较重要的推导,详细的介绍可参考 FFT算法学习笔记 令v[n]是长度为2N的实序列,V[k]表示该实序列的2N点DFT.定义两个长度为N的实序 ...
- 洛谷 2312 / bzoj 3751 解方程——取模
题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...
- HDU - 3364 Lanterns(高斯消元解方程(取模))
题目链接:点击查看 题目大意:给出 n 盏灯和 m 个开关,每个开关可以控制多个灯,每次询问给定灯的最终状态,问有多少种方案可以到达 题目分析:以开关为变元,灯为方程列出方程组,每次求出有多少个自由元 ...
- POJ - 2065 SETI(高斯消元解方程(取模))
题目链接:点击查看 题目大意:给出一个质数作为 mod,再给出一个字符串,每个字母对应着一个数字: ' * ' = 0 ' a ' = 1 ' b ' = 2 ... ' z ' = 26 假设字符串 ...
- Newcoder Wannafly13 B Jxy军训(费马小定理、分数在模意义下的值)
链接:https://www.nowcoder.com/acm/contest/80/B 题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不 ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence 矩阵快速幂,原根转化模意义下对数,BSGS
文章目录 题意 题解 对数法转指数线性递推 原根与模意义下求对数 拔山盖世! 最终步骤 Problem Origin 狠搞了一个多星期,做出来之后仍然一知半解,写个博客重理思路. 题意 定义序列fff ...
- CERC2015 Frightful Formula 神奇的模意义下分数
上网查了下这道题的正解是FFT......然而机智的xushu用待定系数法A了.... f[i,j]+k=a(f[i][j-1]+k)+b(f[i-1,j]+k) 解得 k=c/(a+b-1) 于是令 ...
- 斐波那契数列取模(大数)分治算法
斐波那契数列取模(大数)分治算法 这是算法课程上完分之策略后老师留的一道题目: 菲波那契数列如下:1,1,2,3,5,8,13,21,34......其中a[1] = 1, a[2] = 1, a[n ...
- 浅谈LCD、OLED、TFT取模及其程序开发的算法取舍
做任何电子产品,必然有人机交互的部分,对于开发人员而已,可能性只需要一个简单的串口就可以完成产品所有功能上的开发,但是产品推广后期必然会加入一些显示器件,最常用的就是LCD.OLED.TFT(可能还有 ...
最新文章
- UI培训分享:UI设计行业常见术语有哪些?
- 明天一定要记得放一个硬币在口袋
- mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)
- java gui 打开另一个,java – 从另一个JFrame Gui访问vars
- 手游复古传奇服务器维护,复古传奇手游:服务器中那些极品装备,属性也是逆天!...
- cheat给linux,[极客工具]cheat-linux命令行实用助记工具
- SharePoint 2013 Ajax 造成页面无法编辑
- [海康威视]-门禁设备告警布防代码C#实现
- android系统输入法下载官网下载地址,kazakhsha kirgizwshi下载
- ue4 本地化要点详解
- 修改密码 -测试用例设计
- 使用HoloLens 2调用深度相机和前置摄像头
- 【DP练习】月饼盒(提高版)(vijos1255)
- Linux下分区、挂载、删除分区说明
- 艾克---BBB时间设置
- 【4022】有些KPI的完成,╮(╯▽╰)╭
- 前端之表格,表单,列表
- 走进web(关于web、web1.0、web2.0、web3.0)
- Arcgis计算坡度问题
- python求10000以内的质数_python找出10000以内的质数_【Python学习】打印10000以内的所有素数...