题目描述

已知多项式方程:

a0+a1x+a2x2+⋯+anxn=0

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

输入输出格式

输入格式:

共 n+2 行。

第一行包含 2个整数 n,m,每两个整数之间用一个空格隔开。

接下来的 n+1n+1n+1 行每行包含一个整数,依次为 a0,a1,a2…an

输出格式:

第一行输出方程在 [1,m] 内的整数解的个数。

接下来每行一个整数,按照从小到大的顺序依次输出方程在 [1,m]内的一个整数解。

思路:

有一个奇妙的东西叫秦九韶算法

(不知道的请左转百度)

然后我们看到a都很大

于是我们想到了hash

将 a hash掉

之后验证时取膜即可

代码:

// luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
#define p1 19260817
#define p2 23333
using namespace std;
char ai[];
long long a1[],a2[];
int ans[],n,m,cnt;
inline void c1(int wz,int len)
{
int pd=;
int fi=;
if(ai[]=='-')
{
pd=-;
fi=;
}
long long ans=ai[fi]-'';
for(rii=fi+;i<=len-;i++)
{
ans*=;
ans+=ai[i]-'';
ans%=p1;
}
a1[wz]=ans*pd;
}
inline void c2(int wz,int len)
{
int pd=;
int fi=;
if(ai[]=='-')
{
pd=-;
fi=;
}
long long ans=ai[fi]-'';
for(rii=fi+;i<=len-;i++)
{
ans*=;
ans+=ai[i]-'';
ans%=p2;
}
a2[wz]=ans*pd;;
}
inline bool check(int v)
{
long long ans=a1[n];
for(rii=n;i>=;i--)
{
ans*=v;
ans%=p1;
ans+=a1[i-];
ans%=p1;
}
if(ans!=)
{
return ;
}
ans=a2[n];
for(rii=n;i>=;i--)
{
ans*=v;
ans%=p2;
ans+=a2[i-];
ans%=p2;
}
if(ans!=)
{
return ;
}
return ;
}
inline void sr()
{
int wz=;
char l=getchar();
while(l!=)
{
ai[wz]=l;
l=getchar();
wz++;
}
}
int main()
{
scanf("%d%d\n",&n,&m);
for(rii=;i<=n;i++)
{
memset(ai,,sizeof(ai));
// scanf("%s",ai);
sr();
int ltt=strlen(ai);
c1(i,ltt);
c2(i,ltt);
}
// for(rii=0;i<=n;i++)
// {
// cout<<a2[i]<<" ";
// }
for(rii=;i<=m;i++)
{
if(check(i)==)
{
cnt++;
ans[cnt]=i;
}
}
cout<<cnt<<endl;
for(rii=;i<=cnt;i++)
{
printf("%d\n",ans[i]);
}
}

解方程(hash,秦九韶算法)的更多相关文章

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

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

  2. NOIP 2014 D2T3 解方程 Hash大法好

    题目大意:给定高次方程an*x^n+...+a1*x^1+a0*x^0=0 求[1,m]区间内有多少个整数根 ai<=10^10000.m<=100W 懒得高精,考场上写的long dou ...

  3. LOJ2503 NOIP2014 解方程 【HASH】

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

  4. luogu2312 解方程 (数论,hash)

    luogu2312 解方程 (数论,hash) 第一次外出学习讲过的题目,然后被讲课人的一番话惊呆了. 这个题,我想着当年全国只有十几个满分.....然后他又说了句我考场A这道题时,用了5个模数 确实 ...

  5. luogu2312 [NOIp2015]解方程 (秦九韶)

    秦九韶算法:多项式$a_0+a_1x+a_2x^2+...+a_nx^n=a_0+x(a_1+x(a_2+...+(xa_n))..)$,这样对于一个x,可以在O(n)求出结果 为了避免高精度,我们同 ...

  6. Hash表算法详解

    Hash表定义 散列表(Hash table,也叫哈希表),是根据关键字值(Key value)直接进行访问的数据结构.也就是说,它通过把关键字(关键字通过Hash算法生成)映射到表中一个位置来访问记 ...

  7. 【hash】什么是hash,什么是哈希,什么是hash散列,什么是hash一致性算法【关于hash的详解】

    什么是hash,什么是哈希,什么是hash散列,什么是hash一致性算法

  8. luogu题解P2312解方程--暴力模+秦九韶

    题目链接 https://www.luogu.org/problemnew/show/P2312 分析 这道题很毒啊,这么大的数. 但是如果多项式\(\sum_{i=0}^N a[i]*X^i=0\) ...

  9. [noip2014]P2312 解方程

    P2312 解方程 其实这道题就是求一个1元n次方程在区间[1, m]上的整数解. 我们枚举[1, m]上的所有整数,带进多项式中看看结果是不是0即可. 这里有一个技巧就是秦九韶算法,请读者自行查看学 ...

随机推荐

  1. CTF传送门

    https://www.zhihu.com/question/30505597详细见知乎 推荐书: A方向: RE for BeginnersIDA Pro权威指南揭秘家庭路由器0day漏洞挖掘技术自 ...

  2. gcc工作原理

    gcc工作流程 1.预处理 --E 1.宏替换 2.头文件展开 3.注释去掉 4.xxx.c -> xxx.i 2.编译 --S 1.xxx.i -> xxx.s 2.汇编文件 3.汇编 ...

  3. Java集合篇三:Vector

    package com.test.collection; import java.util.Vector; public class MyVector { /** * @param args */ p ...

  4. 使用angular帮你实现拖拽

    拖拽有多种写法,在这里就看一看angular版的拖拽. <!DOCTYPE html> <html ng-app="myApp"> <head> ...

  5. 002Angular2工程目录解构

    |--my-app 工程名 |--e2e 端到端测试 |--node_modules package.json列出的第三方模块放在此处 |--src |--app |--app.component.c ...

  6. 随学笔记 partAdded

    随学笔记: RectangularDropShadow为矩形对象添加阴影,DropShadowFilter可以为任意形状对象添加阴影. BorderContainer和Panel等容器使用的就是Rec ...

  7. elasticsearch5.5.2环境搭建

    运行elasticsearch5.5.2需要jdk1.8版本以上 1.elasticsearch可以去官网或github下载,window系统推荐zip压缩版 2.解压后 进入bin目录运行elast ...

  8. BeginInvoke和EndInvoke方法

    本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法 2. Thread类 3. 线程池 4. 线程同步基础 5. 死锁 6. 线程同步的7种方法 7. 如何在线程中访问G ...

  9. ORACLE_FUNCTION

    FUNCTION: DEFINE:函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数. 1.basic syntax create [or replace] function f ...

  10. Using nxlog4go for Testing Environment

    nxlog4go is very simple to use without any configuring, setting. For example: package main import ( ...