题目描述

已知多项式方程:

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

分析:一看想是用高精度做,可能还会超时,就没仔细做,打的暴力枚举,50分正解:其实不是高精度……对于很大的数,我们可以给它取模,因为等式两边取模仍然成立。但是枚举x来判断的话会超时,所以这里用到一个技巧:如果一个数x对于这个等式成立的话,那么x+mod(模的那个数)也会成立。需要注意的是,只用一个数模可能会不对,所以多用几个检验一下。代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 110
#define N 1000010
#define ll long long
using namespace std;
char s[N];
int n,m;
ll a[3][M],p[3]={0,10007,1000001397};
bool ok[N];
bool check(int x,int num)
{ll ans=0,w=1;for(int i=0;i<=n;i++){ans=(ans+a[num][i]*w%p[num])%p[num];w=(w*x)%p[num];}if(!(ans%p[num]))return true;return false;
}
int main()
{freopen("jh.in","r",stdin);scanf("%d%d",&n,&m);for(int i=0;i<=n;i++){scanf("%s",s);int l=strlen(s);bool flag=false;for(int j=1;j<=2;j++){int x=0;if(s[0]=='-'){flag=true;x=1;}for(int k=x;k<l;k++)a[j][i]=(a[j][i]*10%p[j]+(ll)s[k]-'0')%p[j];if(flag)a[j][i]=p[j]-a[j][i];}}for(int i=1;i<=p[1];i++)if(check(i,1)){for(int j=i;j<=m;j+=p[1])if(check(j,2))ok[j]=true;}int tot=0;for(int i=1;i<=m;i++)if(ok[i])tot++;printf("%d\n",tot);for(int i=1;i<=m;i++)if(ok[i])printf("%d\n",i);return 0;
}

View Code

转载于:https://www.cnblogs.com/harden/p/5785170.html

解方程(codevs 3732)相关推荐

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

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

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

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

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

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

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

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

  5. 洛谷P2312 解方程题解

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

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

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

  7. 【PC工具】如何简单粗暴无脑的解方程

    都2020年了(二十一世纪快中叶了): 信息时代这么多年了,已经进入云计算时代了: 电脑都会下围棋了: 火箭都能回收了: ... 那么 问题就来了:我们是不是还要用手解方程呢?电脑能不能给爷(我)解方 ...

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

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

  9. 学习Matlab强大的符号计算(解方程)

    学习Matlab强大的符号计算(解方程) 分类: 学习 其它语言 2011-09-19 10:34 3135人阅读 评论(0) 收藏 举报 matlab [plain] view plaincopyp ...

  10. 20220401 从解方程角度看什么是线性系统的能控与能观

    目录 1. 能控 1.1 单入多出 1.2 多入多出 2. 能达 3. 能观 4. 总结 1. 能控 1.1 单入多出 线性定常离散系统通常要进行能控和能观的分析,其实,所谓的能控和能观无非就是解方程 ...

最新文章

  1. Java中Integer包装类之间的比较问题
  2. mybatis oracle批量修改
  3. Java字符串的10大热点问题盘点
  4. 【数学与算法】牛顿法 及其一系列改进算法
  5. Dubbo 版 Swagger 来啦!
  6. nodejs(6)express学习
  7. JS map和set
  8. Go语言标准库之strconv
  9. loadrunner 商城项目随机选书
  10. shell中set的用法(转)
  11. matlab安装及破解
  12. 2020年即将推出的智能手环APP定制开发
  13. 内网穿透之Http穿透(让全网都可以访问你的项目)
  14. 小程序隐藏左上角小房子
  15. 在浏览器的标签页显示网站标志图标
  16. 街霸5服务器链接已中断,《街头霸王5》常见问题解决方法
  17. 2021年化工自动化控制仪表及化工自动化控制仪表模拟考试
  18. Linux的vi编辑器下的常用命令
  19. 公司无线WIFI解决方案
  20. DevEco Studio使用技巧

热门文章

  1. Java知多少(15)字符串
  2. change to port 80 instead of 8069
  3. (原创)无废话C#设计模式之十一:Composite
  4. bmw info source
  5. why do not do consultant any more?
  6. 两点感悟:关于教育与未来
  7. [git] 如何处理push失败的commit
  8. redhat6.5 yum register 问题
  9. goland 交叉生成linux文件
  10. 10分钟理解依赖注入