解方程(NOIP2014)Warning!(前方高能!!)
一看这不是水题嘛。
枚举+乱搞。。特别容易、。。、
然后a[i]取值范围出现了
当当当当~:|a[i]|<=10^10000!!!!!
我去,这是什么鬼。。
高精度?
然后默默算了算。。
O(10000*n*m)BOOM!TLE..
好吧,高精度没用了。。
那么我们再来看一看。。
根据某位大牛的说法x mod p=0那么(x+p)mod p=0;
我们反过来
假设一个数a=k*x+q
那么a mod x=q;
所以我们可以直接%,不用怕结果会改变,,边读边膜。
首先我们要多找几个质数。。(10000左右)
5个就差不多了。
然后我们要把1~质数最大值的数都代入方程里check一下,看那些是方程的解(注意!要5个都代!不然有可能出现膜数的倍数!)
然后就是寻找解*k的答案啦(在1~m中找)
下面贴代码:
注意!对于这道鬼畜的题目,在跑的慢的评测机上strlen()极容易TLE(我也不知道为什么。。也许常数太大了。。)
所以对于字符串的判断我们要用(for int j=0;num[j];++j)来进行。。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char num[];
int a[][];
int b[][];
int ans[];
int ans1,n,m;
const int mod[]={,,,,};
void check(int x)
{
for(int i=;i<;i++)
for(int j=n;j>=;j--)
b[i][x%mod[i]]=(b[i][x%mod[i]]*(x%mod[i])+a[i][j])%mod[i];
}
bool judge(int x)
{
for(int i=;i<;i++)
if(b[i][x%mod[i]])return ;
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%s",num);
for(int j=;num[j];++j)
{
if(num[j]>=''&&num[j]<='')
{
for(int k=;k<;k++)
a[k][i]=(a[k][i]*+num[j]-'')%mod[k];
}
}
if(num[]=='-')
{
for(int k=;k<;k++)
a[k][i]*=-;
}
}
for(int i=;i<;i++)check(i);
for(int i=;i<=m;i++)
if(judge(i))ans[++ans1]=i;
printf("%d\n",ans1);
for(int i=;i<=ans1;i++)
printf("%d\n",ans[i]);
}
解方程(NOIP2014)Warning!(前方高能!!)的更多相关文章
- 洛谷P2312 解方程 [noip2014] 数论
正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不 ...
- 刷题总结——解方程(NOIP2014)
题目: 题目描述 已知多项式方程: a0+a1x+a2x2+…+anxn=0 求这个方程在[1,m]内的整数解(n 和 m 均为正整数). 输入格式 输入共 n+2 行. 第一行包含 2 个整数 n. ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- BZOJ 3751: [NOIP2014]解方程 数学
3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- 【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即可. 这里有一个技巧就是秦九韶算法,请读者自行查看学 ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
随机推荐
- 华为模拟器ensp代码错误2,41,40问题的解决
win8+ensp320 ensp这是个神奇的软件,问题竟然出现的这么莫名其妙..前一秒还是好的时候,后一秒就立马出现了问题.不过不要慌...沉住气,把这篇文章看下去. 博主从昨天开始,ensp神奇的 ...
- C语言字符篇(五)内存函数
memcpy不可以把目的地址写成本身 但是memmove可以,因为它是先保存到临时空间 #include <string.h> void *memcpy(void *dest, con ...
- C语言函数篇(二)函数参数基础设计
形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...
- C语言基础篇(三) 指针
导航: 1.指针 2. 数组 3. 结构体,共用体 4. 内存分布图 5. 段错误分析 ----->x<------------->x<---- ...
- 笔记-redis深入学习-1
笔记-redis深入学习-1 redis的基本使用已经会了,但存储和读取只是数据库系统最基础的功能: 数据库系统还得为可靠实现这两者提供一系列保证: 数据.操作备份和恢复,主要是持久化: 高可用:主要 ...
- javascript数组&省市联动分别用js数组和JSON实现
1.定义数组的三种方式: **数组可以存放不同的数据类型 第一种: var arr=[1,2,3]; var arr=[1,"2",true]; 第二种: 使用内置对象 ...
- 【APUE】Chapter12 Thread Control
今天看了APUE的Chapter12 Thread Control的内容,记录一下看书的心得与示例code. 这一章的内容是对Chapter11 Threads(见上一篇日志)的补充,大部分内容都是理 ...
- Linux编译安装与配置-MySQL(5.5,5.6)版本系(笔记)
MySQL 5.5(5.6)后版本,需要使用cmake(Cross make , https://cmake.org/ )编译 我的环境如下: VMWare虚拟机,CentOS 5.5 x86_64( ...
- GTID环境中手动修复主从故障一例(Error 1236/Error 1396)
Preface I got an replication error 1236 when I modified the password of a user without start ...
- freemaker示例
第一步 创建一个User.java文件 来两个变量 public class User { private String userName; private String us ...