#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 ] 内的一个整数解。

样例输入[复制]

输入样例#1:
2 10 
1
-2
1

输入样例#2:
2 10
2
-3
1

输入样例#3:
2 10 


2

样例输出[复制]

输出样例#1:
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 解方程 取模意义下运算+秦九韶算法相关推荐

  1. 模意义下的FFT算法

    //写在前面 单就FFT算法来说的话,下面只给出个人认为比较重要的推导,详细的介绍可参考 FFT算法学习笔记 令v[n]是长度为2N的实序列,V[k]表示该实序列的2N点DFT.定义两个长度为N的实序 ...

  2. 洛谷 2312 / bzoj 3751 解方程——取模

    题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...

  3. HDU - 3364 Lanterns(高斯消元解方程(取模))

    题目链接:点击查看 题目大意:给出 n 盏灯和 m 个开关,每个开关可以控制多个灯,每次询问给定灯的最终状态,问有多少种方案可以到达 题目分析:以开关为变元,灯为方程列出方程组,每次求出有多少个自由元 ...

  4. POJ - 2065 SETI(高斯消元解方程(取模))

    题目链接:点击查看 题目大意:给出一个质数作为 mod,再给出一个字符串,每个字母对应着一个数字: ' * ' = 0 ' a ' = 1 ' b ' = 2 ... ' z ' = 26 假设字符串 ...

  5. Newcoder Wannafly13 B Jxy军训(费马小定理、分数在模意义下的值)

    链接:https://www.nowcoder.com/acm/contest/80/B 题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不 ...

  6. Codeforces 1106F Lunar New Year and a Recursive Sequence 矩阵快速幂,原根转化模意义下对数,BSGS

    文章目录 题意 题解 对数法转指数线性递推 原根与模意义下求对数 拔山盖世! 最终步骤 Problem Origin 狠搞了一个多星期,做出来之后仍然一知半解,写个博客重理思路. 题意 定义序列fff ...

  7. 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) 于是令 ...

  8. 斐波那契数列取模(大数)分治算法

    斐波那契数列取模(大数)分治算法 这是算法课程上完分之策略后老师留的一道题目: 菲波那契数列如下:1,1,2,3,5,8,13,21,34......其中a[1] = 1, a[2] = 1, a[n ...

  9. 浅谈LCD、OLED、TFT取模及其程序开发的算法取舍

    做任何电子产品,必然有人机交互的部分,对于开发人员而已,可能性只需要一个简单的串口就可以完成产品所有功能上的开发,但是产品推广后期必然会加入一些显示器件,最常用的就是LCD.OLED.TFT(可能还有 ...

最新文章

  1. UI培训分享:UI设计行业常见术语有哪些?
  2. 明天一定要记得放一个硬币在口袋
  3. mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)
  4. java gui 打开另一个,java – 从另一个JFrame Gui访问vars
  5. 手游复古传奇服务器维护,复古传奇手游:服务器中那些极品装备,属性也是逆天!...
  6. cheat给linux,[极客工具]cheat-linux命令行实用助记工具
  7. SharePoint 2013 Ajax 造成页面无法编辑
  8. [海康威视]-门禁设备告警布防代码C#实现
  9. android系统输入法下载官网下载地址,kazakhsha kirgizwshi下载
  10. ue4 本地化要点详解
  11. 修改密码 -测试用例设计
  12. 使用HoloLens 2调用深度相机和前置摄像头
  13. 【DP练习】月饼盒(提高版)(vijos1255)
  14. Linux下分区、挂载、删除分区说明
  15. 艾克---BBB时间设置
  16. 【4022】有些KPI的完成,╮(╯▽╰)╭
  17. 前端之表格,表单,列表
  18. 走进web(关于web、web1.0、web2.0、web3.0)
  19. Arcgis计算坡度问题
  20. python求10000以内的质数_python找出10000以内的质数_【Python学习】打印10000以内的所有素数...

热门文章

  1. jquery的全选,全不选,反选
  2. WSDL中文版——详解
  3. Java 集合中的方法性能分析
  4. RHCE-postfix
  5. 找工作刷题--------Java相关
  6. 一个栗子上手CSS3动画
  7. 【心灵鸡汤】高情商者的15个表现
  8. jvm诊断与优化(3)
  9. php新版本废弃 preg_replace /e 修饰符
  10. SQL Server 文件路径