【NOIP2014D2T3】解方程
神题一道,做了整整两天(其实是一个思路错了然后搞了两天QAQ)
原题:
已知多项式方程:a0+a1*x+a2*x^2+a3^x3+……+an^xn=0
求这个方程在[1, m]内的整数解(n 和 m 均为正整数)。
0<n≤100,|ai|≤10^10000,an≠0,m≤1000000。
这题很神,首先部分分很足,高精度50,万进制或fft应该能拿70,然后正解的思路很奇怪(至少以我现在的水平看来是的)
思路就是如果一个数是0,呢么不管它膜什么数,结果都是0,我们就可以用这个性质来优化算方程的过程
呢么要枚举1-m,然后算,然而这样会T,就需要优化枚举的过程
如果一个数x%k=0,呢么(x+k)%k也是0,枚举的时候就只需要枚举到膜的数就可以代表后面的数
流程大概是酱紫的:
选择5-6个大质数(下面说的都是用5个质数的情况),在输入的时候直接输入数据就膜这五个大质数,然后分别存五个输入数据,表示这五个质数对应的输入数据
枚举内五个质数,然后枚举1-当前的质数,把枚举的东西丢进去算,如果等于零,这个答案就是合法的,否则不合法
如果这五质数搞出来的结果有一个不合法,枚举的东西就不合法
然而上面是这么说的↑,有一点需要注意,枚举的时候不能只用一个数组来+|(或&,都是位运算)来搞,需要先搞五个标记数组,分别对应丢进去算的数分别膜内五个大质数是否合法,在输出的时候再统一验证(即有一个不合法就不合法)
(就是这个问题↑卡了我整两天QAQ)
最后枚举1-m,然后枚举五个大质数,把i膜枚举的质数,然后看对应的标记数组里边是否合法,如果全合法,就进队(要输出个数)
这题脑洞好大……(也许是我太弱了)
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m; int a[][];
bool can[][];
int mo[]={,,,,,};
int dui[],tou=;
bool check(int x,int y){
int z=;
for(int i=n;i>=;i--)
z=((z+a[i][y])*x)%mo[y];
return ((z+a[][y])%mo[y]) ? true : false;//因为memset的问题,所以这里#define false true
}
int main(){//freopen("ddd.in","r",stdin);
memset(can,,sizeof(can));
memset(a,,sizeof(a));
cin>>n>>m;
for(int i=;i<=n;i++){
int mark=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mark=-; ch=getchar();}
while(ch>=''&&ch<=''){
for(int j=;j<=;j++)
a[i][j]=((a[i][j]<<)+(a[i][j]<<)+ch-'')%mo[j];//边读边膜,而且要膜在check的时候膜的内个数
ch=getchar();
}
for(int j=;j<=;j++)
a[i][j]*=mark;
}
for(int j=;j<=;j++)
for(int i=;i<=mo[j]&&i<=m;i++)//如果这个数膜膜的数合法,呢么它加上它膜的内个数也是合法的
can[i][j]=can[i][j] | check(i,j);
int i=;
for(;i<=m;i++){
bool _can=false;
for(int j=;j<=;j++){
int temp=i%mo[j];
_can=_can | can[temp][j];
}
if(!_can) dui[++tou]=i;
}
cout<<tou<<endl;
for(int i=;i<=tou;i++)
printf("%d\n",dui[i]);
return ;
}
【NOIP2014D2T3】解方程的更多相关文章
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- HDU 4793 Collision --解方程
题意: 给一个圆盘,圆心为(0,0),半径为Rm, 然后给一个圆形区域,圆心同此圆盘,半径为R(R>Rm),一枚硬币(圆形),圆心为(x,y),半径为r,一定在圆形区域外面,速度向量为(vx,v ...
- codevs3732==洛谷 解方程P2312 解方程
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- Ural 1046 Geometrical Dreams(解方程+计算几何)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1046 参考博客:http://hi.baidu.com/cloudygoose/item ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- 5.5Python数据处理篇之Sympy系列(五)---解方程
目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...
- python 解方程
[怪毛匠子=整理] SymPy 库 安装 sudo pip install sympy x = Symbol('x') 解方程 solve([2 * x - y - 3, 3 * x + y - 7] ...
- python 解方程 和 python 距离公式实现
解方程参考:https://zhuanlan.zhihu.com/p/24893371 缺点太慢,最后还是自己算了 距离公式参考:https://www.cnblogs.com/denny402/p/ ...
随机推荐
- sql游标的使用入门
游标的理解: 游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行,所以游标是定义在以Select开始的数据集上的 普通的sql语句是面向集合的,游标 ...
- 关于Mapper、Reducer的个人总结(转)
Mapper的处理过程: 1.1. InputFormat 产生 InputSplit,并且调用RecordReader将这些逻辑单元(InputSplit)转化为map task的输入.其中Inpu ...
- Java中方法与数组
1:方法(掌握) (1)方法:就是完成特定功能的代码块. 注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法. (2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参 ...
- hadoop启动jobhistoryserver
hadoop启动jobhistoryserver来实现web查看作业的历史运行情况,由于在启动hdfs和Yarn进程之后,jobhistoryserver进程并没有启动,需要手动启动,启动的方法是通过 ...
- combox源码解析
/** * jQuery EasyUI 1.3.2 * * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. * * Lice ...
- Ubuntu 14.10 下进程实时IO监控iotop命令详解
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
- hadoop 中对Vlong 和 Vint的压缩方法
hadoop 中对java的基本类型进行了writeable的封装,并且所有这些writeable都是继承自WritableComparable的,都是可比较的:并且,它们都有对应的get() 和 s ...
- 使用hadoop multipleOutputs对输出结果进行不一样的组织
MapReduce job中,可以使用FileInputFormat和FileOutputFormat来对输入路径和输出路径来进行设置.在输出目录中,框架自己会自动对输出文件进行命名和组织,如:par ...
- (spring-第7回【IoC基础篇】)BeanDefinition的载入与解析&&spring.schemas、spring.handlers的使用
报错信息:Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http: ...
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...