题目描述

已知多项式方程:

a0+a1x+a2x^2+..+anx^n=0

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

输入输出格式

输入格式:

输入文件名为equation .in。

输入共n + 2 行。

第一行包含2 个整数n 、m ,每两个整数之间用一个空格隔开。

接下来的n+1 行每行包含一个整数,依次为a0,a1,a2..an

输出格式:

输出文件名为equation .out 。

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

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

输入输出样例

输入样例#1:

2 10
1
-2
1

输出样例#1:

1
1

输入样例#2:

2 10
2
-3
1

输出样例#2:

2
1
2

输入样例#3:

2 10
1
3
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

题解:
具体不是很清楚啊......

抄了抄代码而已......

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <cmath>
 6 #include <iostream>
 7 #define ll long long
 8 using namespace std;
 9
10 const int maxn = 110;
11 const int maxm = 1000010;
12
13 int n,m;
14 int mod[5]={11261,19997,22877,21893,14843};
15 int a[maxn][5],ans[maxm],pre[maxn][5],res[maxm][5];
16 char s[10010];
17
18 int cal(int x, int j) {
19   int sum=0;
20   for(int i=0; i<=n; i++) sum=(sum+pre[i][j]*a[i][j])%mod[j];
21   if(sum<0) sum+=mod[j];//处理模后负数,%+%
22   return sum;
23 }
24
25 bool check(int x) {
26   for(int j=0; j<5; j++)
27     if(res[x%mod[j]][j]) return 0;
28   return 1;
29 }
30
31 int main() {
32   scanf("%d%d", &n, &m);
33   for(int i=0; i<=n; i++) {
34     scanf("%s", s);
35     int ls=strlen(s); bool flg=0;
36     for(int j=0; j<5; j++)
37       if(s[0]=='-') flg=1;
38       else a[i][j]=s[0]-'0';
39     for(int j=0; j<5; j++) {
40       for(int l=1; l<ls; l++) a[i][j]=(a[i][j]*10+s[l]-'0')%mod[j];
41       if(flg) a[i][j]=-a[i][j];
42     }
43   }
44   for(int j=0; j<5; j++) {
45     pre[0][j]=1;
46     for(int x=1; x<mod[j]; x++) {
47       for(int i=1; i<=n; i++)
48     pre[i][j]=(pre[i-1][j]*x)%mod[j];
49       res[x][j]=cal(x,j);
50     }
51   }
52   for(int i=1; i<=m; i++)
53     if(check(i)) ans[++ans[0]]=i;
54   printf("%d\n", ans[0]);
55   for(int i=1; i<=ans[0]; i++)
56     printf("%d\n", ans[i]);
57   return 0;
58 }

转载于:https://www.cnblogs.com/HLXZZ/p/7266893.html

[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. [BZOJ3751] [NOIP2014] 解方程 (数学)

    Description 已知多项式方程:$a_0+a_1*x+a_2*x^2+...+a_n*x^n=0$ 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m ...

  4. 【NOIP2014】解方程【秦九韶】【高精度处理】

    传送门 其实秦九韶相信都会,主要是喜欢这道题对于高精度的处理. 我们发现这道题的情况比较特殊,a大的很,看起来是要高精度的鸭子. 不过我们发现一个事情.我们是在解方程,找到合适的x使多项式为0.那mo ...

  5. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程

    前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...

  6. java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...

    用纯字符串格式来记录二次方程: '3x^2-10x-8=0' 'x^2-2x+1=0' '3x^2+14x+8=0' 'x^2=9' 二次方怎么表示呢?比如上面的^表示法,或者是python风格的** ...

  7. 10.24T3 解方程 取模意义下运算+秦九韶算法

    #1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...

  8. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  9. 重根迭代法解方程(两种方法)(Python实现)

    简述 通过两种不同的重根迭代的来解方程. 处理的方程是 (sin(x) - x/2) ^2 = 0 代码 采用的第一种迭代重根迭代方法: xk+1=xk−mf(xk)f′(xk)xk+1=xk−mf( ...

最新文章

  1. 贪心:Wiggle Subsequence 摇摆序列
  2. 扩展城市信道etu模型matlab仿真,LTE System Toolbox:无线通信系统的仿真、分析和测试...
  3. Ascend学习资源
  4. Linux Shell脚本之向脚本传递参数
  5. Centos7将firewall替换成iptables
  6. 已知c语言程序有主程序模块prog.c,嵌入式系统试卷--A卷
  7. python tqdm进度条打印
  8. python动态与静态语言_静态语言和动态语言的区别
  9. 【自】数据库系统原理(三)——测试总结后,
  10. 跳跃回溯____寻找最长平台
  11. ComponentPattern (组合模式)
  12. 织梦网站调用变量失败_(自适应手机版)响应式精密机械模具类网站织梦模板 织梦仪器模具加工设备网站模板下载...
  13. 四阶五级matlab,微分方程数值解法matlab(四阶龙格—库塔法).ppt
  14. 怎么给php加音乐,给网站加上背景音乐的方法
  15. wampserver php 目录,小常识-WAMPServer自定义根目录
  16. 装配区5s管理制度推行办法
  17. DB2新建用户及数据库过程
  18. BZOJ 1413: [ZJOI2009]取石子游戏 博弈+Dp
  19. 大厂对学历的要求是什么?如果学历不够,拿什么来凑?
  20. 怎么查看linux自动校验时间,linux校验时间

热门文章

  1. [原创] 为什么模除的时候一般建议选择素数来除?比如说hashtable的桶数会取一个素数...
  2. 2015年9月百度前端在线笔试
  3. 自学python系列10:python的函数和函数式编程
  4. winform下通过webclient使用非流方式上传(post)数据和文件
  5. Ubuntu+Apache+PHP+Mysql环境搭建
  6. iOS UICollectionViewCell 的拖动
  7. JavaMail 发送邮件
  8. 嵌入式培训学习历程第三天
  9. 数据库——startup,startup mount,startup nomount有什么区别
  10. Oracle 日志文件