又是数论题


Q&A

Q:你TM做数论上瘾了吗

A:没办法我数论太差了,得多练(shui)啊


题意

题目描述

已知多项式方程:

a0+a1x+a2x^2+..+anx^n=0

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

输入输出格式

输入格式:

输入文件名为equation .in。

输入共n + 2 行。

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

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

输出格式:

输出文件名为equation .out 。

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

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


我们来看看这鬼畜的NOIP题目怎么做(shui)

讲道理,这道题最难的地方在于:不知谁在洛谷上给它贴上了高精度的标签(管理给我滚粗来)我想知道有多少人在这狗血标签的引导下怒写高精+压位+秦九昭+各种奇技淫巧优化,最后拿个T回去哭


正解并没有用到高精度(虽然我写的输入是仿照高精度的,但是hzw大的代码是直接字符串处理的Orz)
但是hzw用了一个神奇的pre来存x的i次方,我懒得打就打了一个秦九昭(讲道理,秦九昭不会比暴力难打,而且可以少开一个数组)

顺便一提,据说大神用过的质数会有灵气,我直接用了hzw用的5个质数当mod

对于5个(其实无所谓选几个,多一点可以保险一些我这种rp不佳的必备)选出的质数p,每个都处理出1~p-1代入原式modp算出的结果

这个结果就可以代表所有modp同余的数的结果(因为显然每次增加p的话,结果变化量是p的倍数,modp以后不会变),若modp以后不为0则一定不是方程解

尽管我们不能保证为0的话实际结果就一定是0,但是用5个数都验证一遍以后基本就能保证这个结果为0

===没了===


上代码

 1 #include<cstdio>
 2 int mod[5]={11261,19997,22877,21893,14843};
 3 int n,m;
 4 int ans[1000005];
 5 int a[5][105],res[5][30005],aa[105][10005],num[105];
 6 bool flag[105];
 7 int main()
 8 {
 9     scanf("%d%d",&n,&m);
10     char ch=getchar();
11     for(int i=0;i<=n;i++)
12         for(num[i]=0,flag[i]=false,ch=getchar();(ch>='0' && ch<='9')||(ch=='-');ch=getchar())
13             if(ch=='-')
14                 flag[i]=true;
15             else
16                 aa[i][++num[i]]=ch-'0';
17     for(int i=0;i<5;i++)
18         for(int j=0;j<=n;j++)
19         {
20             a[i][j]=0;
21             for(int k=1;k<=num[j];k++)
22                 a[i][j]=(a[i][j]*10+aa[j][k])%mod[i];
23             if(flag[j])
24                 a[i][j]=-a[i][j];
25         }
26     for(int t=0;t<5;t++)
27         for(int x=1;x<mod[t];x++)
28         {
29             int sum=0;
30             for(int i=n;i>=0;i--)
31                 sum=(sum*x+a[t][i])%mod[t];
32             res[t][x]=sum;
33         }
34     int sum=0;
35     bool flag;
36     for(int i=1;i<=m;i++)
37     {
38         flag=true;
39         for(int t=0;t<5;t++)
40             if(res[t][i%mod[t]]!=0)
41             {
42                 flag=false;
43                 break;
44             }
45         if(flag)
46             ans[++sum]=i;
47     }
48     printf("%d\n",sum);
49     for(int i=1;i<=sum;i++)
50         printf("%d\n",ans[i]);
51     return 0;
52 }

转载于:https://www.cnblogs.com/wanglichao/p/5683694.html

NOIP2014 uoj20解方程 数论(同余)相关推荐

  1. bzoj 3751: [NOIP2014]解方程(同余系)

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3983  Solved: 850 [Submit][Stat ...

  2. 【NOIP2014】解方程【秦九韶】【高精度处理】

    传送门 其实秦九韶相信都会,主要是喜欢这道题对于高精度的处理. 我们发现这道题的情况比较特殊,a大的很,看起来是要高精度的鸭子. 不过我们发现一个事情.我们是在解方程,找到合适的x使多项式为0.那mo ...

  3. 题解 【NOIP2014】解方程

    题面 解析 这题的数据看起来似乎特别吓人... 但实际上, 这题非常好想. 只需要模一个大质数就行了(我模的是1e9+7)(实测有效) 另外,a要用快读读入,再一边模Mod(因为实在太大了). 然后, ...

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

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

  5. 10.24T3 解方程 取模意义下运算+秦九韶算法

    #1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...

  6. codevs3732==洛谷 解方程P2312 解方程

    P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a0+ ...

  7. python解方程代码_Python解方程的技巧介绍(代码示例)

    本篇文章给大家带来的内容是关于Python解方程的技巧介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. numpy numpy 用来解方程的话有点复杂,需要用到矩阵的思 ...

  8. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程

    前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...

  9. java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...

    用纯字符串格式来记录二次方程: '3x^2-10x-8=0' 'x^2-2x+1=0' '3x^2+14x+8=0' 'x^2=9' 二次方怎么表示呢?比如上面的^表示法,或者是python风格的** ...

最新文章

  1. 【radar】毫米波雷达-相机-激光雷达融合相关论文汇总(特征融合、RPN融合、弱监督融合、决策融合、深度估计、跟踪)(5)
  2. C与指针课后答案与编程练习(第一章)
  3. winform运行时如何接受参数?(示例)
  4. mysql数据库入门第二张试卷_2016计算机二级《MySQL数据库》练习题与答案
  5. Java Web应用的代码分层最佳实践。
  6. ASP.NET版在线客服系统源码 带服务端
  7. JS日历控件优化(增加时分秒)
  8. jstree禁用父节点点击_Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题...
  9. 商业杂志图表的经典用色
  10. pc电脑上浏览手机网站在线wap浏览器或模拟器软件
  11. PDF虚拟打印机有什么用?关于PDF虚拟打印机你要知道的事情都在这
  12. 五一入哪个牌子蓝牙耳机好?无线主动降噪蓝牙耳机排行榜
  13. InDesign 教程如何制作明信片?
  14. 检查并杀死mysql锁死的进程
  15. IDL数据类型之数组
  16. 手机APP与机顶盒互通
  17. 金网安泰JAVA开发工程师面经
  18. PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
  19. 手机qq获取本地安装包的原理简单实现
  20. 回溯、图论——最大团问题(求最大完全子图)

热门文章

  1. linux+虚拟机上的wdcp,linux虚拟主机服务器wdcp系统教程
  2. 2019哈佛计算机专业录取,2019哈佛大学早申请录取数据公布 录取率再降1个点仅为13.4%...
  3. 荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
  4. xy坐标正负方向_【笛卡尔坐标系】
  5. java用switch语句根据分数输出学生等级
  6. c语言补全程序,跪求高手解答简单的程序补全题~!
  7. Java @Override注解
  8. 没有bug队——加贝——Python 练习实例 13,14
  9. android点击切换,android 导航栏中的按钮的点击切换
  10. 两台服务器安装redis集群_redis 集群搭建,小白也能搭三主三从的集群环境