洛谷P2312 解方程 [noip2014] 数论
正解:数论
解题报告:
又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ
首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不会常规方法做是趴
然后.首先我们思考30pts怎么做,因为这题的主要做法其实就30pts能解决主要问题在于数据范围很大嘛
然后30pts要用个听起来很牛逼其实很亲民的定理--秦九韶定理
我们思考那个算式怎么算嘛,如果最傻逼的,就每次ai×xi然后算一下,一般人应该不会这么傻逼?
然后就想到一个很容易想到的东西,就是变成a+(a+(a+(a+x)*x)*x)*x这样的形式,这样就很简单而且我们可以O(m)地做掉是趴
然后这个东西就是秦九韶定理...所以说只是听起来好像很厉害其实还是比较好想的趴
然后说亲民主要读入优化会用到嘛,实在是天天用啊
接下来考虑更大的怎么做
首先如果实在想不出来了我们可以用高精度拿到点儿部分分(...话说我真的挺想有时间用高精码一发鸭,好久没写高精了...
但是NOIp好像很久没考高精了?我们就先不往这方面想
跑个题嗷,其实今天的话我觉得还是比较好想到正解的,所以说我没有想到还是很不应该,说明思维没有拓展,考试的意义没有最大程度地发挥出来鸭
就是今天不是做T3的时候没有膜法嘛,zsy学长就分享了一个方法--在做的过程中先把答案取膜然后最后输出的时候枚举一下i算出哪个i能满足取膜等于答案就好了!那时候我还觉得很妙来着!这时候居然就忘了!真的太傻逼了我!
对这里就是相同的想法鸭,我们也是对答案取膜如果取膜意义下最后的答案是0说明有很大的可能不取膜也是0对趴,如果不放心的话可以多膜几个数就没问题辣!
这里大概还是能明白的趴?
但是还有一个待解决的问题--a太大了怎么办
然后有个还是比较显然的玩意儿就是说 a*x≡(a%p)*x (mod p)
这个也太显然了?
然后推广一下就可以得到 ai*xi+ai-1*xi-1+...≡(ai%p)*xi+(ai-1%p)*xi-1+....(mod p)
这样的话相当于我们读入优化的时候直接读入的时候对每个a%p就成了,然后如果不放心多开了几个mod就多存到几个数组里就成了
大概就这样?overrrrr
放代码辽
#include<bits/stdc++.h>
using namespace std;
#define ll unsigned long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i)
,mb=,mc=;
ll m,n,cjk,ans[],a[],b[],c[];
inline ll read1()
{
;;
'))ch=getchar();
;
)+(x<<)+(ch^'),ch=getchar();
return y?x:-x;
}
inline void read2(ll i)
{
;
'))ch=getchar();
;
)+(a[i]<<)+(ch^)+(b[i]<<)+(ch^)+(c[i]<<)+(ch^'))%mc,ch=getchar();
if(!y)a[i]=-a[i],b[i]=-b[i],c[i]=-c[i];
return;
}
inline bool check(ll x)
{
ll ansa=,ansb=,ansc=;
rp(j,,n){ll i=n-j;ansa=(ansa+a[i]+ma)*x%ma,ansb=(ansb+b[i]+mb)*x%mb,ansc=(ansc+c[i]+mc)*x%mc;}
&& ansb== && ansc==);
}
int main()
{
n=read1();m=read1();
rp(i,,n)read2(i);
rp(i,,m)if(check(i))ans[++cjk]=i;
printf("%lld\n",cjk);
rp(i,,cjk)printf("%lld\n",ans[i]);
;
}
点我!看!傻逼!灵巧!在线!做题!
洛谷P2312 解方程 [noip2014] 数论的更多相关文章
- 2018.11.02 洛谷P2312 解方程(数论)
传送门 直接做肯定会TLETLETLE. 于是考验乱搞能力的时候到了. 我们随便选几个质数来checkcheckcheck合法解,如果一个数无论怎么checkcheckcheck都是合法的那么就有很大 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷 P2312 解方程 题解
P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...
- 洛谷 P2312 解方程 解题报告
P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- 洛谷 P2312 解方程
题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...
- 洛谷P2312解方程
传送门 思路分析 怎么求解呢? 其实我们可以把左边的式子当成一个算式来计算,从1到 $ m $ 枚举,只要结果是0,那么当前枚举到的值就是这个等式的解了.可以通过编写一个 $ bool $ 函数来判断 ...
- 洛谷P2312解方程题解
题目 暴力能得\(30\),正解需要其他的算法操作,算法操作就是用秦九韶算法来优化. 秦九韶算法就是求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值,然后就将求\ ...
- 洛谷P2312 解方程(暴力)
题意 题目链接 Sol 出这种题会被婊死的吧... 首先不难想到暴力判断,然后发现连读入都是个问题. 对于\(a[i]\)取模之后再判断就行了.注意判断可能会出现误差,可以多找几个模数 #includ ...
随机推荐
- Android开发-- The content of the adapter has changed but ListView did not receive a notification - With AsyncTask
最近在联系开发DaysMatter时遇到一个问题: app中使用ListView来展示所有事件,每次添加完事件后使用下面代码来更新ListView. toDoListView.refreshDrawa ...
- Maven构建Web项目
1. Maven的作用: [清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目] 2. 安装maven maven对JDK版本有要求,所以要设置好JDK的环境变量. M ...
- 64位Oracle 11g 使用PL/SQL
Oracle 11g和PL/SQL安装完后,发现打开PL/SQL并不能连接Oracle数据库! [第一回合]完败! 先是在网上找解决方法,说是需要使用Net Configuration Assista ...
- Vim 手记:语法高亮
本文覆盖范围: Vim 的着色方案 设置高亮 选择颜色 语法高亮除错 每个程序员的文本编辑器缺少了语法高亮.特殊关键字和短语着色,都是不完整的.语法高亮突出了文档的结构,帮助发现排字错误,利于调试,整 ...
- codeforces水题100道 第五题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas (math)
题目链接:http://www.codeforces.com/problemset/problem/546/A题意:一个人现在有n元,它买第i根香蕉需要i*k元,问他要买w根香蕉的话,需要问他的朋友借 ...
- linux制做RPM包
制作rpm包 1.制作流程 1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好 ...
- C语言内存使用的常见问题及解决之道
一 前言 本文所讨论的“内存”主要指(静态)数据区.堆区和栈区空间(详细的布局和描述参考<Linux虚拟地址空间布局>一文).数据区内存在程序编译时分配,该内存的生存期为程序的整个运行期 ...
- 决策树归纳算法之C4.5
前面学习了ID3,知道了有关“熵”以及“信息增益”的概念之后. 今天,来学习一下C4.5.都说C4.5是ID3的改进版,那么,ID3到底哪些地方做的不好?C4.5又是如何改进的呢? 在此,引用一下前人 ...
- Delphi应用程序的调试(四)The Debug Inspector
调试检查器(The Debug Inspector) Debug Inspector使用户能查看诸如类和记录的数据对象,也可以用它来查看整数.字符数组等简单数据类型,但这类简单数据类型最好是用Watc ...
- Android与互联网的交互方式有三种
数据下载:下载网络上的的数据,包括图片.代码文本.XML文件.JSON数据,音/视频等大文件,调用webservice. 数据上传:上传图片.文本.XML.JSON数据.音/视频文件,调用webser ...