codevs3732 解方程
%%%。设f(x)=a0+a1x+a2x^2+ … + anx^n.求f(x)=0的x。
数据范围很大,高精度只能骗分。
运用类似hash的思想。 如果这个等式mod p 还成立(p为质数)那它很可能就是成立。
多取几个质数(大质数更优)就可以几乎确定了。(70分)
100分时m很大,不能都算出来。
仔细分析,如果在模p时f(x)!=0,则f(x+p)肯定也不是解。这样一来只需枚举从1到p的数即可确定所有的数是否能为解。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 100000 + 10;
const int maxm = 1000000 + 10; const long long p[]={11261,19997,22877,21893,14843,17851};
long long a[110][10];
long long f[maxn][10];
int n,m,cnt;
char s[maxn];
bool able[maxm];
int res[maxm]; long long calc (long long i,int j) {
long long sum=a[0][j]; long long t=1; i=i%p[j];
for(int k=1;k<=n;k++) {
t=t*i%p[j];
sum=(sum+a[k][j]*t)%p[j];
}
return sum;
} int main() {
bool sgn;
scanf("%d%d",&n,&m);
for(int i=0,l;i<=n;i++) {
scanf("%s",s);
l=strlen(s);
sgn=0; for(int j=0;j<l;j++) {
if(s[j]=='-') {
sgn=1;
continue;
}
for(int k=0;k<6;k++) a[i][k]=(a[i][k]*10+s[j]-'0')%p[k];
} if(sgn)
for(int k=0;k<6;k++) a[i][k]=p[k]-a[i][k];
}
for(int j=0;j<6;j++)
for(int i=1;i<=p[j];i++)
f[i][j]=calc(i,j); memset(able,1,sizeof(able)); for(int j=0;j<6;j++)
for(int i=1;i<=m;i++)
if(f[i%p[j]][j] != 0) able[i]=0;
for(int i=1;i<=m;i++) if(able[i]) res[++cnt]=i; printf("%d\n",cnt);
for(int i=1;i<=cnt;i++) printf("%d\n",res[i]);
return 0;
}
codevs3732 解方程的更多相关文章
- codevs3732==洛谷 解方程P2312 解方程
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- HDU 4793 Collision --解方程
题意: 给一个圆盘,圆心为(0,0),半径为Rm, 然后给一个圆形区域,圆心同此圆盘,半径为R(R>Rm),一枚硬币(圆形),圆心为(x,y),半径为r,一定在圆形区域外面,速度向量为(vx,v ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- Ural 1046 Geometrical Dreams(解方程+计算几何)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1046 参考博客:http://hi.baidu.com/cloudygoose/item ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- 5.5Python数据处理篇之Sympy系列(五)---解方程
目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...
- python 解方程
[怪毛匠子=整理] SymPy 库 安装 sudo pip install sympy x = Symbol('x') 解方程 solve([2 * x - y - 3, 3 * x + y - 7] ...
随机推荐
- 两个list 求交集效率对比
__author__ = 'daitr' #--coding:utf-8-- import datetime #方法一: #a=[2,3,4,5] #b=[2,5,8] #tmp = [val for ...
- Demo学习: ColumnSort
ColumnSort 设置UniDGGrid点击表头时排序,设置方法比较麻烦且不通用,在实际开发中用处不大. 自己在项目中用了一个比较笨的办法,写了一个函数通过sql来排序: procedure TM ...
- python自定义线程池
关于python的多线程,由与GIL的存在被广大群主所诟病,说python的多线程不是真正的多线程.但多线程处理IO密集的任务效率还是可以杠杠的. 我实现的这个线程池其实是根据银角的思路来实现的. 主 ...
- Beaglebone Back学习二(功能测试)
开发板测试 买到开发板后,首先要测试一下板子的功能,这个可以参考官方的步骤(Getting Started)进行. 1 首先下载最新的镜像文件http://beagleboard.org/latest ...
- 代码规范-IAR设置
1.在IAR内定义 char 2. 去掉相关的告警 3.LANGUAGE设置
- 记录类型中String的释放
String能自动释放,在进行内存拷贝时需要进行手动释放.可以直接调用Finalize手工释放 如:TGraphicHideTab 记录中声明的Caption:string TGraphicHideT ...
- fedora 禁止nouveau加载
To remove / disable nouveau drivers from kernel initramfs ## Backup old initramfs nouveau image ## m ...
- drop column与set unused
8i以前,如果需要删除表中的列,需要删除表然后重新建.现在,但我们需要删除一个列时,可以有以下两种方法: Logical Delete Physical Delete Logical Delete(逻 ...
- Mysql 配置主从服务自动同步功能
1.修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 serve ...
- Redis之七种武器
长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...