CF859G,奇妙的数学题
来源:互联网 发布:淘宝店铺重开 编辑:程序博客网 时间:2024/05/16 19:35
当时赛场上A掉前三题后,跟Chenwystc大爷分头开DE,我D他E,然后因为我是先做分值更低的D,导致只有rk155,比rk119的Chenwystc大爷低到不知道哪里去了。
A掉E后还有44分钟,大力做G,根本做不出,我真是太菜了。
从物理学角度看这题,有一个显然的做法:直接判n个质点的重心是否在圆心即可。具体实现时若直接用单位根,精度会爆炸,毕竟题解里号称可以造出重心离圆心只有
那么,为什么直接判n个质点的重心是否在圆心即可?
考虑将n个质点写成多项式
将
然后可以发现最大公因式就是
分圆多项式是不可约的整系数多项式,这是其性质。
本来是要做多项式取模的,但实际上只要任取一个
对此的感性理解是因为分圆多项式是不可约的整系数多项式,所以如果一个
毕竟我也不是搞MO的,严格证明可能需要初三就拿到MO联赛一等的royms大爷了。 这是OI,不是MO,大胆猜想,不用证明,反对科学,崇尚迷信
#include<cstdio>#include<ctime>const int N=100005;int n,i,p,g,a[N],w,x,y,z;char c[N];inline bool isp(int p){ for(register int i=2;i*i<=p;++i)if(p%i==0)return 0; return 1;}inline int pow(int x,int y,int p){ int ans=1; for(;y;y>>=1,x=1ll*x*x%p)if(y&1)ans=1ll*ans*x%p;return ans;}inline int getg(int p){ register int g=2,i; for(;;++g){ for(i=1;i<=w;++i) if(pow(g,a[i],p)==1)break; if(i>w)return g; }}int main(){ scanf("%d%s",&n,c+1); for(i=1;i<=n;++i)c[i]^=48;p=1; while(clock()<800){ for(p+=n;!isp(p);p+=n); w=0; for(i=2;i*i<=p-1;++i)if((p-1)%i==0)a[++w]=i,a[++w]=(p-1)/i; g=getg(p); z=pow(g,(p-1)/n,p); for(i=x=1,y=0;i<=n;++i,x=1ll*x*z%p) y=(y+1ll*x*c[i])%p; if(y)return puts("NO"),0; } puts("YES"); return 0;}
- CF859G,奇妙的数学题
- 奇妙的图片
- 行为学奇妙的联觉
- 奇妙的网络世界
- 奇妙的堆栈
- auto_ptr_ref的奇妙
- 奇妙的Base64编码
- 奇妙的“秒”世界
- 奇妙的7
- 奇妙的图片
- 奇妙的相亲数
- 奇妙的Base64编码
- 奇妙的paramsPrepareParamsStack
- auto_ptr_ref的奇妙
- 数组的奇妙
- 奇妙的SynchronizationContext
- 奇妙的心电图数列
- 奇妙的Base64编码
- Curling 2.0
- java三大特性:封装
- LeetCode 0680
- “软件工程(C编码实践篇)”实验报告【实验二:命令行菜单小程序V1.0】
- 已知一组数列为1,2,4,7,11,16,22...则数列的第n项为?
- CF859G,奇妙的数学题
- CentOS下安装JDK
- jsp基础-九大内置对象
- 实验一:Linux操作系统的安装
- Hdu1969-Pie-【二分】
- RGBD_SLAM(1)
- 八种架构设计模式及其优缺点概述
- 二叉树最小深度探究
- BeautifulSoup中的.text方法和get_text()方法的区别