【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/ ...
随机推荐
- 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序
1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...
- [转]建立swap分区
1,fdisk 时设置id号82(t选项中L可查) 2,mkswap /dev/sdXx 3,swapon /devsdXx 4,cat /proc/swap or swapon -s 就可以看到了 ...
- MapReduce 重要组件——Recordreader组件
(1)以怎样的方式从分片中读取一条记录,每读取一条记录都会调用RecordReader类: (2)系统默认的RecordReader是LineRecordReader,如TextInputFormat ...
- JVM-class文件完全解析-字段表集合
字段表集合 这个class文件的解析,分析得有点太久了.前面介绍类魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合.下面就应该到字段表集合了. 紧接着接口索引 ...
- Form表单的操作
form对象 <form name=“form1” action=“login.php” method=“post”></form> form对象的属性 name:表单名称 m ...
- HibernateDaoSupport 源码
package org.springframework.orm.hibernate3.support; import org.hibernate.HibernateException; import ...
- mysql 创建存储过程注意
最近在利用navicat创建存储过程时,总是报1064语法错误,而且每次都是指向第一行,百思不得姐,如下图: 后来发现,原来是输入参数没有定义长度导致,所以以后真要注意 加上入参长度即可:IN `sT ...
- R——启程——豆瓣影评分析
专业统计的我,自然免不了学R的,今天仔细看了这篇教程(感谢学姐的推荐@喜欢算法的女青年),就学着用R仿照着做一个,作为R语言学习的起点吧. 影评数据是用python爬的,之后会在python爬虫系列补 ...
- python3爬虫初探(二)之requests
关于请求网页,不得不提requests这个库,这是爬虫经常用到的一个第三方库,用pip安装即可. requests用法很多,这里只写一些基础的,其他高级功能可参考官方文档. import reques ...
- HDU4055 - number string(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 思路:dp[i][j]表示处理前i个字符以j结尾可能的序列数. 当a[i]=='I'时,dp[i ...