题意

求\(\sum_{i=0}^{n} a_i x^i = 0\)在\([1, m]\)内的整数解。(\(0 < n \le 100, |a_i| \le 10^{10000}, a_n \neq 0, m \le 1000000\))

分析

神题。

题解

我们可以取几个质数然后对应取模来计算即可。可是在经过变态的加强数据后,不是tle就是wa。

于是我们可以用一个正确率很低的优化。

令$f(x, p) = \sum_{i=0}^{n} a_i x^i \pmod{p} \(,容易知道\)f(x, p) = f(x \ mod \ p, p)\(,所以我们取一些较小的\)p\(,暴力预处理一下然后\)O(1)$就可以判断了。

最后为了提高正确率,我们再将验证通过的数再用大质数验证一次。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int p[4]={11261, 14843, 21893, 9851197}, f[25005][3], n, m, a[105][4], ans[1000015];
int main() {
scanf("%d%d", &n, &m);
for(int i=0; i<=n; ++i) {
char c=getchar();
int f=1;
for(; c<'0'||c>'9'; c=getchar()) {
if(c=='-') {
f=-1;
}
}
for(; c>='0'&&c<='9'; c=getchar()) {
for(int k=0; k<4; ++k) {
a[i][k]*=10;
a[i][k]+=c-'0';
a[i][k]%=p[k];
}
}
if(f==-1) {
for(int k=0; k<4; ++k) {
a[i][k]=p[k]-a[i][k];
}
}
}
for(int k=0; k<3; ++k) {
for(int x=1; x<p[k]; ++x) {
for(int i=0, now=1; i<=n; ++i, now=now*x%p[k]) {
f[x][k]+=now*a[i][k]%p[k];
if(f[x][k]>=p[k]) {
f[x][k]-=p[k];
}
}
}
}
int cnt=0;
for(int i=1; i<=m; ++i) {
bool flag=1;
for(int k=0; k<3; ++k) {
if(f[i%p[k]][k]) {
flag=0;
break;
}
}
if(flag) {
int ret=0;
for(int j=0, now=1; j<=n; ++j, now=(ll)now*i%p[3]) {
ret+=(ll)now*a[j][3]%p[3];
if(ret>=p[3]) {
ret-=p[3];
}
}
if(ret==0) {
ans[cnt++]=i;
}
}
}
printf("%d\n", cnt);
for(int i=0; i<cnt; ++i) {
printf("%d\n", ans[i]);
}
return 0;
}

【BZOJ】3751: [NOIP2014]解方程的更多相关文章

  1. BZOJ 3751: [NOIP2014]解方程 数学

    3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...

  2. bzoj 3751: [NOIP2014]解方程 同余系枚举

    3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...

  3. bzoj 3751: [NOIP2014]解方程

    Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...

  4. bzoj 3751: [NOIP2014]解方程【数学】

    --我真是太非了,自己搞了7个质数都WA,从别人那粘5个质数就A了-- 就是直接枚举解,用裴蜀定理计算是否符合要求,因为这里显然结果很大,所以我们对多个质数取模看最后是不是都为0 #include&l ...

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

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

  6. LOJ2503 NOIP2014 解方程 【HASH】

    LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...

  7. [NOIP2014]解方程

    3732 解方程  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 输入描述 Input Descrip ...

  8. [BZOJ3751][NOIP2014] 解方程

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

  9. 【bzoj3751】[NOIP2014]解方程 数论

    题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...

随机推荐

  1. TCP/IP——链路层

    链路层主要有三个目的: (1)为IP模块发送和接收IP数据报; (2)为ARP模块发送 ARP请求和接收 ARP应答; (3)为RARP发送RARP请求和接收RARP应答. TCP / IP支持多种不 ...

  2. 深入理解javascript原型和闭包(15)——闭包

    前面提到的上下文环境和作用域的知识,除了了解这些知识之外,还是理解闭包的基础. 至于“闭包”这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住. 但是你只需要知道应用的两种情况即可 ...

  3. 转 C# 只允许运行一个实例

    来源:http://blog.csdn.net/jin20000/article/details/3136791 互斥进程(程序), 简单点说,就是在系统中只能有该程序的一个实例运行. 现在很多软件都 ...

  4. HDU 5686 斐波那契数列、Java求大数

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=5686 当我们要求f[n]时,可以考虑为前n-1个1的情况有加了一个1. 此时有两种情况:当不适用第n个1进 ...

  5. Vue in 2016

    原文链接:Vue in 2016 Vue 作者尤雨溪对 Vue 在 2016 年的总结以及未来的展望 现在已经是2016的尾声了!在这过去的12个月里,Vue的持续增长速度已经超过了我的预期--这个项 ...

  6. [BZOJ1146][CTSC2008]网络管理Network

    [BZOJ1146][CTSC2008]网络管理Network 试题描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建 ...

  7. DPM算法源程序voc-release5在Windows中的配置修改过程

    最近的<视频处理与分析>课程中有一个大作业,是有关DPM物体检测算法的.网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎 ...

  8. Java中的BoneCP数据库连接池用法

    http://zhoufoxcn.blog.51cto.com/792419/438277/ C3P0,Proxool,BoneCP,Druid

  9. mysql查询语句select-子查询

    1 子查询定义 在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select).子查询的结果传递 ...

  10. Python验证码6位自动生成器

    Python验证码6位自动生成器