题目描述

已知多项式方程:

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. linux里终端安转视频播放器的操作及显示

    [enilu@enilu ~]$ mplayerbash: mplayer: command not found[enilu@enilu ~]$ yum list | grep mplayer^C^C ...

  2. jquery mobile 自定义图标

    Jquery Mobile框架包含了一组最常用的移动应用程序所需的图标,为了减少下载的大小,Jquery Mobile包含的是的白色的图标sprite图片,并自动在图标后添加一个半透明的黑圈以确保在任 ...

  3. log4j 配置详解

    参考如下两个网址,讲的很详细,先看第一个再看第二个: log4j使用介绍:http://swiftlet.net/archives/683 java日志处理组件log4j--log4j.xml配置详解 ...

  4. 一键完成SAP部署的秘密,想知道么?

    诸如 SAP 这样的企业级应用已成为普遍的流行趋势.考虑到不同行业和需求的特点,所选平台必须能够为不同层面用户和各种 IT 活动提供灵活的容量需求. 此时上云也许是种不错的选择,而想上云的企业,一方面 ...

  5. sql字段合并与分组聚合

    http://blog.csdn.net/cuixianlong/article/details/74024846 1 字段合并 原始数据如下:表名为Employee ID FirstName Las ...

  6. (六)svn 服务器端使用之权限管理

    权限管理(了解) 认证授权机制 在企业开发中会为每位程序员.测试人员等相关人员分配一个账号,用户通过使用svn客户端连接svn服务时需要输入账号和密码,svn服务对账号和密码进行校验,输入正确可以继续 ...

  7. java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract

    二月 26, 2019 3:47:40 上午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for ...

  8. Python新式类 单例模式与作用域(四)

    1 新式类与旧式类 新式类拥有经典类的全部特性之外,还有一些新的特性,比如 __init__发生变化,新增了静态方法__new__,python3目前都采用新式类,新式类是广度优先,旧式类是深度优先 ...

  9. 网络防火墙之iptables的前世今生和归宿

    任何事物都有一个从无到有,再归于无的过程.是的,我这里用了一个绝对词:任何. 防火墙 在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的 ...

  10. Nginx AWS ELB 域名解析后端502问题

    转载:http://liyangliang.me/posts/2016/04/nginx-aws-elb-name-resolution/