【TOJ1132】Square Root,二次同余方程
传送门
写在前面:ACdreamer大神太强辣!希望能达到他一半的高度啊!
思路:ACdreamer’s blog
裸题调了好久ORZ
注意:关于(a+√w)^((p+1)/2)的求法,我至今都没太想明白……
代码:
#include"bits/stdc++.h"
using namespace std;
int t,a,x,p,w;
struct os
{int u,v;
};
os mul(os a,os b)
{os c;c.u=(a.u*b.u%p+a.v*b.v%p*w%p)%p;c.v=(a.u*b.v%p+a.v*b.u%p)%p;return c;
}
int qr(int x,int y,int z)
{int ans=1;while (y){if (y&1) ans=ans*x%p;y>>=1;x=x*x%z;}return ans;
}
main()
{scanf("%d",&t);while (t--){scanf("%d%d",&x,&p);if (p==2) {printf("1\n");continue;}if (qr(x,(p-1)>>1,p)-p==-1){printf("No root\n");continue;}while (1){a=rand()%p;w=a*a-x;w%=p;while (w<0) w+=p;if (qr(w,(p-1)>>1,p)-p==-1) break;}int yy=(p+1)>>1;os ans,xx;ans.u=1;ans.v=0;xx.u=a;xx.v=1;while(yy){if (yy&1) ans=mul(ans,xx);xx=mul(xx,xx);yy>>=1;}int ans1=ans.u,ans2=p-ans.u;if (ans1==ans2) printf("%d\n",ans1);else printf("%d %d\n",min(ans1,ans2),max(ans1,ans2));}
}
【TOJ1132】Square Root,二次同余方程相关推荐
- 快速开平方根倒数算法(Fast inverse square root)的一点探究
文章目录 一.写在前面 1. 提示 2. 背景与前情 二.正文 1. 需求分析 2. 必备工具之IEEE-754浮点数表示方法 3. 同一储存单元32bits的两种不同意义 4. 公式推导 4. 本文 ...
- 二次剩余,二次同余方程
定义: 对于方程x2≡n(mod p) , nx^2\equiv n (mod \;p)\;,\;nx2≡n(modp),n为p的二次剩余 , x为该二次同余方程的解 就如字面意思一样 , n就 ...
- UVA10023 Square root【大数】
You are to determinate X by given Y , from expression X =Y\sqrt{Y}Y Input The first line is the num ...
- 平方根倒数速算法(Fast Inverse Square Root)
平方根倒数速算法(Fast Inverse Square Root) 一.背景 平方根倒数速算法是适用于快速计算积的算术平方根的倒数(在此需取符合IEEE 754标准格式的32位浮点数)的一种算法 ...
- The Square Root of Three 孤独的根号三 David B. Feinberg 大卫·范伯格
The Square Root of Three 孤独的根号三 David B. Feinberg 大卫·范伯格 I'm sure that I will always be A lonely num ...
- [Swift]快速反向平方根 | Fast inverse square root
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 牛顿法求解1-100的平方根python_使用牛顿-拉弗森法定义平方根函数(Newton-Raphson method Square Root Python)...
牛顿法(Newton's method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法.(注:Joseph Raphson在1690年出版的< ...
- 欧拉工程第57题:Square root convergents
题目链接 Java程序 package projecteuler51to60;import java.math.BigInteger; import java.util.Iterator; impor ...
- CodeForces - 715A Plus and Square Root(思维+构造)
题目链接:点击查看 题目大意:我们在玩一个游戏,屏幕上有一个数字,我们设这个数字为x,初始值为2,我们一开始的等级是k,我们每一次可以有两种操作: 加法:可以让x加上k 开根号:可以让x开根号,并且等 ...
最新文章
- TensorFlow入门(二)简单前馈网络实现 mnist 分类
- php怎么四舍五入,php 四舍五入的三种实现方法
- 关于MCP2515帧连发、多发的坑
- 昂贵的聘礼 Dijkstra法
- instanceof_您真的需要instanceof吗?
- Redis:08---字符串对象
- 数据库中,连接有哪些不同类型?请说明这些类型之间的差异,以及为何在某些情形下,某种连接会比较好。...
- 解决谷歌浏览器所有页面崩溃问题
- PHP中几种b2b,用php开发 b2b 用什么架构?
- 势头强劲的 Python PK 强大的 C++,究竟谁更胜一筹?
- C++11 random库
- 计算机-计算机发展史
- 微软输入法数字有间隔_Word 2016中使用微软拼音输入法,换行后输入数字、标点时会没有输入进去,需要再输入一次...
- 为什么阿里 P7 都找不到工作了?
- wang zhe rong yao
- 微信小程序OTO商城(客户端)
- 5G+AI+大数据+IoT如何改变一切?
- 【好文】太用力的人跑不远
- DNS与HTTPDNS
- 关于PR安装在D盘初始化时闪退,加载到optical的时候PR直接闪退