Description

已知多项式方程:

a0+a1x+a2x2+...+an*xn=0

求这个方程在[1,m]内的整数解(n和m均为正整数)。

解题报告:

这题比较诡,看到高精度做不了,就要想到取模,然后很容易发现是有问题的,所以要多取几个增加正确性,然后就开始枚举解,对于合法的解一定是对所有你选的质数都成立。

对于求这个多项式的值可以用秦九韶算法,这里不多做赘述.

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define RG register
#define il inline
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=105,M=1000005;
int pri[6]={30011,11261,14843,19997,10007,21893},n,m,a[N][6];
bool vis[M/10][6];
void gi(int i){
char ch=getchar();int f=1;
while(ch>'9' || ch<'0'){
if(ch=='-')f=-1;ch=getchar();
}
while(ch>='0' && ch<='9'){
for(int k=0;k<6;k++)
a[i][k]=a[i][k]*10+ch-48,a[i][k]%=pri[k];
ch=getchar();
}
for(int k=0;k<6;k++)a[i][k]*=f;
}
int ans[M],num=0;
bool judge(int x,int k){
int ret=0;
for(int i=n;i>=1;i--)
ret=x*ret%pri[k]+a[i][k],ret%=pri[k];
return ret==0;
}
bool check(int x){
for(int i=0;i<6;i++)
if(vis[x%pri[i]][i]==0)return false;
return true;
}
void work()
{
scanf("%d%d",&n,&m);n++;
for(int i=1;i<=n;i++)gi(i);
for(int i=0;i<6;i++)
for(int j=0;j<pri[i];j++)
vis[j][i]=judge(j,i);
for(int i=1;i<=m;i++)
if(check(i))ans[++num]=i;
printf("%d\n",num);
for(int i=1;i<=num;i++)printf("%d\n",ans[i]);
} int main(){work();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]解方程【数学】

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

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

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

  5. 【BZOJ】3751: [NOIP2014]解方程

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

  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. 2018c语言第1次作业

    6-1 计算两数的和与差 1.设计思路 (1)主要描述题目算法 第一步:把两个数的加减法分别赋给psum和pdiff. 第二步:通过psum和pdiff的地址把值传回主函数. (2)流程图.(无) 2 ...

  2. 关于FPGA随笔

    verilog与c

  3. nyoj 邮票分你一半

    邮票分你一半 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述      小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明.每张邮票上都有分值,他们想把这些邮票分 ...

  4. NoSQL简介

    相信大家也多多少少了解过一些数据库,最常用的当属MySQL了,当然也这是关系型数据库的代表了 常见的关系型数据库有:MySQL.SQLServer.Oracle 而数据库也有另一个流派-----NoS ...

  5. js中严格模式

    我们在js中可以使用"use strict";定义了我们在接下来的文档输写中 将按照严格模式进行: function(){ "use strict'; ;// 在这里我们 ...

  6. java之servlet小记

    Servlet               service+applet                   服务+小程序 Java是语言,像c\c#等一样,是一门计算机语言,servlet是java ...

  7. Python内置函数(26)——enumerate

    英文文档: enumerate(iterable, start=0) Return an enumerate object. iterable must be a sequence, an itera ...

  8. OAuth2.0学习(1-1)OAuth2.0是什么?

    目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题 OAuth就是用于为第三方应用授权访问用户的资源应用的. 目前有OAuth1. ...

  9. C# Bootstrap table之 分页

    效果如图: 一.声明talbe <div class="container"> <table id="table" class="t ...

  10. java stream 原理

    java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字,然后从中选 ...