Description

已知多项式方程:$a_0+a_1*x+a_2*x^2+...+a_n*x^n=0$

求这个方程在[1,m]内的整数解(n和m均为正整数)。

Input

第一行包含2个整数n、m,每两个整数之间用一个空格隔开。
接下来的n+1行每行包含一个整数,依次为a0,a1,a2,...,an。

Output

第一行输出方程在[1,m]内的整数解的个数。

接下来每行一个整数,按照从小到大的顺序依次输出方程在[1,m]内的一个整数解。

Sample Input

2 10
2
-3
1

Sample Output

2
1
2

HINT

  对于100%的数据,0<n≤100,|ai|≤10^10000,an≠0,m≤1000000。

Source

Solution

  考虑对等式左边整体对质数取模,这部分用秦九韶算法实现可以大大提速,并且可以避免大量的高精度运算

  假设模数为$p$,不难发现在模$p$意义下$x$与$x+kp$得到的结果一样,所以我们可以预处理出$[0,p)$的答案,推出$[1,m]$是否可能是解

  因为$p$很小会有类似哈希冲撞的事发生,所以我们可以选取多个$p$。据说是选$5$个$20000$左右的质数就可以,然而我换过好几个质数,不是$WA$就是$TLE$,QAQ

  代码里的质数是网上找的,并不清楚为什么这人的人品能那么好QAQ,$4$个质数就可以$AC$QAQ

  (方法会就行了,这道题考的不是质数的选取,质数照抄就行了)

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 char s[105][10005];
 4 int p[4] = {17389, 22349, 22367, 22369};
 5 int n, a[105], ans[1000005];
 6 bool vis[5][27005];
 7
 8 bool check(int x)
 9 {
10     if(!vis[0][x % 17389]) return false;
11     if(!vis[1][x % 22349]) return false;
12     if(!vis[2][x % 22367]) return false;
13     if(!vis[3][x % 22369]) return false;
14     return true;
15 }
16
17 bool is_zero(int k, int x)
18 {
19     long long ans = a[n];
20     for(int i = n - 1; ~i; --i)
21         ans = (ans * x + a[i]) % p[k];
22     return !ans;
23 }
24
25 int main()
26 {
27     int m, tot = 0;
28     scanf("%d%d", &n, &m);
29     for(int i = 0; i <= n; ++i)
30         scanf("%s", &s[i]);
31     for(int i = 0; i < 4; ++i)
32     {
33         memset(a, 0, sizeof(a));
34         for(int j = 0; j <= n; ++j)
35             if(s[j][0] == '-')
36                 for(int k = 1; s[j][k]; ++k)
37                     a[j] = (a[j] * 10 - s[j][k] + 48 + p[i]) % p[i];
38             else
39                 for(int k = 0; s[j][k]; ++k)
40                     a[j] = (a[j] * 10 + s[j][k] - 48) % p[i];
41         for(int j = 1; j < p[i]; ++j)
42             vis[i][j] = is_zero(i, j);
43     }
44     for(int i = 1; i <= m; ++i)
45         if(check(i)) ans[++tot] = i;
46     printf("%d\n", tot);
47     for(int i = 1; i <= tot; ++i)
48         printf("%d\n", ans[i]);
49     return 0;
50 }

View Code

转载于:https://www.cnblogs.com/CtrlCV/p/5620082.html

[BZOJ3751] [NOIP2014] 解方程 (数学)相关推荐

  1. 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4856  Solved: 983 [Submit][Stat ...

  2. bzoj 3751: [NOIP2014]解方程(同余系)

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3983  Solved: 850 [Submit][Stat ...

  3. [CodeForces-1138B] *Circus 解方程|数学

    题意:有两场表演,n个艺术家,根据规则找出我们要挑选的人的编号,输出编号. 规则1 保证每个人只能参加一场表演,也就是同一个艺术家不能出现在两场表演中 规则2 两场表演参演的艺术家的数量是相同的 规则 ...

  4. [NOIP2014] 解方程

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  5. 【codevs3732】【BZOJ3751】解方程,hash+秦九韶算法

    传送门1 传送门2 写在前面:傻逼字符串毁我青春,颓我精神 思路: 30分:直接暴力1-m枚举就行,每次进行n次运算,然后验证即可,时间复杂度O(nm) 50分:在30分的基础上加上高精度(听Shal ...

  6. LeetCode 441. 排列硬币(数学解方程)

    1. 题目 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围 ...

  7. 【pyhton解决数学问题】2用python解方程

    目录 1Sympy的基本概念 1符号计算 2计算机代数系统 3实际解方程 1把未知数设为符号 2用solve()解方程 1解一元一次方程 2解二元一次方程组 3解决一元二次方程 总结 哈喽,大家好! ...

  8. python数学方程计算_用Python解方程

    一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...

  9. 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起&qu ...

最新文章

  1. 四川大学计算机学院男女生比例,川大、电子科大新生男女比例大PK 比例更佳的是……...
  2. wpf(c#)中获取ComboBox选项值
  3. Java的知识点26——File_API
  4. ACM中java的使用 (转)
  5. java之Arrays工具类的使用
  6. 删除linux目录下一半的文件,Linux面试题(一):删除一个目录下的所有文件,但保留一个指定文件...
  7. linux主机添加discuz伪静态规则,Discuz! X2.5论坛win主机与linux主机伪静态设置方法...
  8. 项目【QT5.13频谱分析软件】(一)——开篇介绍
  9. IDEA 项目启动报错 Shorten the command line via JAR manifest or via a classpath file and rerun.
  10. java 生成交易快照_Java生成订单号/交易流水号
  11. Ubuntu20.04安装nvidia显卡驱动并解决重启后黑屏问题
  12. 独家首发|汇聚知识 理解世界——百度王海峰谈知识图谱的最新演讲笔记
  13. 写给那些进步缓慢却全然不知的IT人
  14. 华为网络工程师项目模拟
  15. 质量改进与可靠性提升,硬核案例学习在这里
  16. 最详细的语言***教程大全
  17. 一些技巧,如何更高层次编写优质嵌入式C代码?
  18. Latex报错:xxxx.sty文件不存在解决方案
  19. 国外程序员整理的Java资源大全
  20. Maxon宣布推出Cinebench Release 20

热门文章

  1. SharePoint 向多行文本类型字段插入特殊类型链接
  2. lo ate my IP address问题解决
  3. movielens推荐系统_浅谈推荐系统+3个小时上手python实现(完整代码)
  4. computed get set 传参_ES6 的 Set 与 Map深入理解
  5. 关于strlwr,strupr等函数在此作用域中尚未声明的问题
  6. 如何一站式快速构建企业全场景数据库管理平台?
  7. 2021阿里巴巴研发效能峰会来啦!
  8. AI 云原生浅谈:好未来 AI 中台实践
  9. 高德最佳实践:Serverless规模化落地有哪些价值?
  10. 简历石沉大海、面试被刷?拒绝你的HR小姐姐,可能只是个AI