题目描述 已知多项式方程:\(a_0 + a_1x + a_2x^2+...+a_nx^n = 0\) 求这个方程在[1,m]内的整数解 \(1\leq n\leq100,|a_i|\leq 10^{10000},a_n≠0,m\leq 10^6\) Solution 首先由于数据过大,只能字符串读入了hhh.然后:对于每个x,算出f(x)%pi,如果f(x)=0则f(x)%pi必然=0,多选几个素数,就可以在一定范围大小内判断成功.好像不够快? \(f(x+p)≡f(x)(mod p)\) 对…
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .in. 输入共n + 2 行. 第一行包含2 个整数n .m ,每两个整数之间用一个空格隔开. 接下来的n+1 行每行包含一个整数,…
P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为正整数). 输入格式 输入共 $ n + 2$ 行. 第一行包含 \(2\) 个整数 \(n, m\) ,每两个整数之间用一个空格隔开. 接下来的 \(n+1\) 行每行包含一个整数,依次为 \(a_0,a_1,a_2\ldots a_n\). 输出格式 第一行输出方程在 [1,m][1,m] 内的…
P2312 解方程 bzoj3751(数据加强) 暴力的一题 数据范围:$\left | a_{i} \right |<=10^{10000}$.连高精都无法解决. 然鹅面对这种题,有一种常规套路:取模 显然方程两边同时$mod$结果不会改变 于是我们牺牲了正确性使答案允许我们暴力枚举. 为了提高正确性我们可以$mod$多个较小质数进行判断 至于代入解方程,用秦九韶算法 (bzoj数据真的强,压线过的) #include<iostream> #include<cstdio>…
P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整数). 输入输出格式 输入格式: 共 \(n + 2\) 行. 第一行包含 \(2\) 个整数 \(n, m\) ,每两个整数之间用一个空格隔开. 接下来的 \(n+1\) 行每行包含一个整数,依次为 \(a_0,a_1,a_2\ldots a_n\) . 输出格式: 第一行输出方程在 \([1,m…
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整数). 输入格式 输入共 \(n + 2\) 行. 第一行包含 \(2\) 个整数 \(n, m\) ,每两个整数之间用一个空格隔开. 接下来的 \(n+1\) 行每行包含一个整数,依次为 \(a_0,a_1,a_2\ldots a_n\). 输出格式 第一行输出方程在 \([1,m]\)…
P2312 解方程 其实这道题就是求一个1元n次方程在区间[1, m]上的整数解. 我们枚举[1, m]上的所有整数,带进多项式中看看结果是不是0即可. 这里有一个技巧就是秦九韶算法,请读者自行查看学习. 时间复杂度O(n*m). 然后你应该可以拿30分. 我们发现这些数都太大了,要开高精度.然后你愉快地拿了50分——复杂度O(n*m*length)会爆炸. 这里我们考虑hash的思想,对结果取模(最好是一个很大的质数P),如果结果是零就说明这是一个解. 应为如果结果是零,那么要么这是一个解,要…
P2312 解方程 随机化的通俗解释:当无法得出100%正确的答案时,考虑随机化一波,于是这份代码很大可能会对(几乎不可能出错). 比如这题:把系数都模一个大质数(也可以随机一个质数),然后O(m)跑一遍检验就好了. 这里插一句,说一下如何随机一个大质数:先搞一个数据范围差不多的数x(rand出来),然后不断 \(o(\sqrt{n})\) 判断x是否为质数,不是就+1.因为质数比较密集,所以复杂度不会很大. #include<bits/stdc++.h> using namespace st…
传送门 直接做肯定会TLETLETLE. 于是考验乱搞能力的时候到了. 我们随便选几个质数来checkcheckcheck合法解,如果一个数无论怎么checkcheckcheck都是合法的那么就有很大概率是正确答案了. 事实证明这个做法是对的. 因此对于某一个质数pri[i]pri[i]pri[i]我们把所有系数模一个pri[i]pri[i]pri[i]之后带入1 pri[i−1]1~pri[i-1]1 pri[i−1]用秦九韶公式检验最后地答案是不是模pri[i]pri[i]pri[i]余00…
正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不会常规方法做是趴 然后.首先我们思考30pts怎么做,因为这题的主要做法其实就30pts能解决主要问题在于数据范围很大嘛 然后30pts要用个听起来很牛逼其实很亲民的定理--秦九韶定理 我们思考那个算式怎么算嘛,如果最傻逼的,就每次ai×xi然后算一下,一般人应该不会这么傻逼? 然后就想到一个很容易想到的…