解方程(codevs 3732)
题目描述
已知多项式方程:
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)相关推荐
- python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程
前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...
- java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...
用纯字符串格式来记录二次方程: '3x^2-10x-8=0' 'x^2-2x+1=0' '3x^2+14x+8=0' 'x^2=9' 二次方怎么表示呢?比如上面的^表示法,或者是python风格的** ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 4856 Solved: 983 [Submit][Stat ...
- 10.24T3 解方程 取模意义下运算+秦九韶算法
#1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 重根迭代法解方程(两种方法)(Python实现)
简述 通过两种不同的重根迭代的来解方程. 处理的方程是 (sin(x) - x/2) ^2 = 0 代码 采用的第一种迭代重根迭代方法: xk+1=xk−mf(xk)f′(xk)xk+1=xk−mf( ...
- 【PC工具】如何简单粗暴无脑的解方程
都2020年了(二十一世纪快中叶了): 信息时代这么多年了,已经进入云计算时代了: 电脑都会下围棋了: 火箭都能回收了: ... 那么 问题就来了:我们是不是还要用手解方程呢?电脑能不能给爷(我)解方 ...
- 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起&qu ...
- 学习Matlab强大的符号计算(解方程)
学习Matlab强大的符号计算(解方程) 分类: 学习 其它语言 2011-09-19 10:34 3135人阅读 评论(0) 收藏 举报 matlab [plain] view plaincopyp ...
- 20220401 从解方程角度看什么是线性系统的能控与能观
目录 1. 能控 1.1 单入多出 1.2 多入多出 2. 能达 3. 能观 4. 总结 1. 能控 1.1 单入多出 线性定常离散系统通常要进行能控和能观的分析,其实,所谓的能控和能观无非就是解方程 ...
最新文章
- Java中Integer包装类之间的比较问题
- mybatis oracle批量修改
- Java字符串的10大热点问题盘点
- 【数学与算法】牛顿法 及其一系列改进算法
- Dubbo 版 Swagger 来啦!
- nodejs(6)express学习
- JS map和set
- Go语言标准库之strconv
- loadrunner 商城项目随机选书
- shell中set的用法(转)
- matlab安装及破解
- 2020年即将推出的智能手环APP定制开发
- 内网穿透之Http穿透(让全网都可以访问你的项目)
- 小程序隐藏左上角小房子
- 在浏览器的标签页显示网站标志图标
- 街霸5服务器链接已中断,《街头霸王5》常见问题解决方法
- 2021年化工自动化控制仪表及化工自动化控制仪表模拟考试
- Linux的vi编辑器下的常用命令
- 公司无线WIFI解决方案
- DevEco Studio使用技巧