NOIP2014 uoj20解方程 数论(同余)
又是数论题
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
===没了===
上代码
#include<cstdio>
int mod[]={,,,,};
int n,m;
int ans[];
int a[][],res[][],aa[][],num[];
bool flag[];
int main()
{
scanf("%d%d",&n,&m);
char ch=getchar();
for(int i=;i<=n;i++)
for(num[i]=,flag[i]=false,ch=getchar();(ch>='' && ch<='')||(ch=='-');ch=getchar())
if(ch=='-')
flag[i]=true;
else
aa[i][++num[i]]=ch-'';
for(int i=;i<;i++)
for(int j=;j<=n;j++)
{
a[i][j]=;
for(int k=;k<=num[j];k++)
a[i][j]=(a[i][j]*+aa[j][k])%mod[i];
if(flag[j])
a[i][j]=-a[i][j];
}
for(int t=;t<;t++)
for(int x=;x<mod[t];x++)
{
int sum=;
for(int i=n;i>=;i--)
sum=(sum*x+a[t][i])%mod[t];
res[t][x]=sum;
}
int sum=;
bool flag;
for(int i=;i<=m;i++)
{
flag=true;
for(int t=;t<;t++)
if(res[t][i%mod[t]]!=)
{
flag=false;
break;
}
if(flag)
ans[++sum]=i;
}
printf("%d\n",sum);
for(int i=;i<=sum;i++)
printf("%d\n",ans[i]);
return ;
}
NOIP2014 uoj20解方程 数论(同余)的更多相关文章
- luogu2312 解方程 (数论,hash)
luogu2312 解方程 (数论,hash) 第一次外出学习讲过的题目,然后被讲课人的一番话惊呆了. 这个题,我想着当年全国只有十几个满分.....然后他又说了句我考场A这道题时,用了5个模数 确实 ...
- 【NOIP2014】解方程
题目描述 已知多项式方程 \[a_0 + a_1x + a_2x^2 + \dots +a_nx^n=0\] 求这个方程在\([1,m]\)内的整数解(\(n\)和\(m\)均为正整数). 输入输出格 ...
- [noip2014]P2312 解方程
P2312 解方程 其实这道题就是求一个1元n次方程在区间[1, m]上的整数解. 我们枚举[1, m]上的所有整数,带进多项式中看看结果是不是0即可. 这里有一个技巧就是秦九韶算法,请读者自行查看学 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
- UOJ20 解方程
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 【NOIP2014】解方程(枚举)
题面 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入格式 输入共n + 2 行. 第一行包含2 个整数 ...
- $Noip2014/Luogu2312$ 解方程
$Luogu$ $Sol$ 枚举解+秦九韶公式计算+取模. $Code$ #include<iostream> #include<cstdio> #include<cst ...
- 题解 【NOIP2014】解方程
题面 解析 这题的数据看起来似乎特别吓人... 但实际上, 这题非常好想. 只需要模一个大质数就行了(我模的是1e9+7)(实测有效) 另外,a要用快读读入,再一边模Mod(因为实在太大了). 然后, ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
随机推荐
- nginx 和 IIS 实现负载均衡
Nginx的作用和优点,这里不必多说,今天主要是nginx负载均衡实验,把做的步骤记录下来,作为一个学习笔记吧,也可以给大家做下参考. 1.Nginx安装 1.下载地址:http://nginx.or ...
- 简单的STM32 汇编程序—闪烁LED
要移植操作系统,汇编是道不得不跨过去的坎.所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式.以此练习汇编,为操作系统做准备. 第一步,还是和上篇一样,建立一个空的文件夹. 第二步,因为是 ...
- UI第十一节——UIActivityIndicatorView
- (void)viewDidLoad { [super viewDidLoad]; // 创建一个UIActivityIndicatorView,大小是固定的 UIActi ...
- ubuntu16.04 NVIDIA显卡驱动安装
安装环境:Ubuntu16.04 1.打开终端,先删除旧的驱动: sudo apt-get purge nvidia* 2禁用自带的 nouveau nvidia驱动 (important!) 创建一 ...
- NOIp2014 解题报告
有史以来第一届面向社会征题的NOIp结束了.最开始以为面向社会征题会很难,但是这是我参加的最水的一次NOIp了. 由于停了两月的课,所以现在正在补文化科目就没时间打代码了.所以所有的题目就均不给出代码 ...
- python des ecb 加密 demo
# -*- coding:utf-8 -*- from pyDes import * def hexString2bytes(src): ret =[] for i in range(len(src) ...
- NHibernate简单使用介绍
1.在数据库中新建表格,并插入记录,SQL如下: USE WFC_DB GO create table Students ( Id ,) not null, Name ), Age int, Scor ...
- Entity Framework 与ORACLE ODP.Net 在vs2010下的稀奇古怪的问题
不说废话 1.在vs2010数据源中看不到oracle odp.net 数据源,vs2008下可以看到,通过oraprocfg配置多次,重启多次,还是看不到,machine.config里面配置也正常 ...
- macbook air 开机黑屏解决方法
故障现象:1. 开机有声音2. 背面logo亮灯3. 键盘背光灯不亮4. 大写锁定键按下不亮5. 屏幕黑屏,无苹果logo 解决:重置PRAM后成功开机. 1. 关闭 Mac.2. 在键盘上找到以下按 ...
- Bravebeart
E - Bravebeart Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Sub ...