传送门
写在前面: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,二次同余方程相关推荐

  1. 快速开平方根倒数算法(Fast inverse square root)的一点探究

    文章目录 一.写在前面 1. 提示 2. 背景与前情 二.正文 1. 需求分析 2. 必备工具之IEEE-754浮点数表示方法 3. 同一储存单元32bits的两种不同意义 4. 公式推导 4. 本文 ...

  2. 二次剩余,二次同余方程

    定义: 对于方程x2≡n(mod  p)  ,  nx^2\equiv n (mod \;p)\;,\;nx2≡n(modp),n为p的二次剩余 , x为该二次同余方程的解 就如字面意思一样 , n就 ...

  3. 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 ...

  4. 平方根倒数速算法(Fast Inverse Square Root)

    平方根倒数速算法(Fast Inverse Square Root) 一.背景   平方根倒数速算法是适用于快速计算积的算术平方根的倒数(在此需取符合IEEE 754标准格式的32位浮点数)的一种算法 ...

  5. 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 ...

  6. [Swift]快速反向平方根 | Fast inverse square root

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. 牛顿法求解1-100的平方根python_使用牛顿-拉弗森法定义平方根函数(Newton-Raphson method Square Root Python)...

    牛顿法(Newton's method)又称为牛顿-拉弗森法(Newton-Raphson method),是一种近似求解实数方程式的方法.(注:Joseph Raphson在1690年出版的< ...

  8. 欧拉工程第57题:Square root convergents

    题目链接 Java程序 package projecteuler51to60;import java.math.BigInteger; import java.util.Iterator; impor ...

  9. CodeForces - 715A Plus and Square Root(思维+构造)

    题目链接:点击查看 题目大意:我们在玩一个游戏,屏幕上有一个数字,我们设这个数字为x,初始值为2,我们一开始的等级是k,我们每一次可以有两种操作: 加法:可以让x加上k 开根号:可以让x开根号,并且等 ...

最新文章

  1. TensorFlow入门(二)简单前馈网络实现 mnist 分类
  2. php怎么四舍五入,php 四舍五入的三种实现方法
  3. 关于MCP2515帧连发、多发的坑
  4. 昂贵的聘礼 Dijkstra法
  5. instanceof_您真的需要instanceof吗?
  6. Redis:08---字符串对象
  7. 数据库中,连接有哪些不同类型?请说明这些类型之间的差异,以及为何在某些情形下,某种连接会比较好。...
  8. 解决谷歌浏览器所有页面崩溃问题
  9. PHP中几种b2b,用php开发 b2b 用什么架构?
  10. 势头强劲的 Python PK 强大的 C++,究竟谁更胜一筹?
  11. C++11 random库
  12. 计算机-计算机发展史
  13. 微软输入法数字有间隔_Word 2016中使用微软拼音输入法,换行后输入数字、标点时会没有输入进去,需要再输入一次...
  14. 为什么阿里 P7 都找不到工作了?
  15. wang zhe rong yao
  16. 微信小程序OTO商城(客户端)
  17. 5G+AI+大数据+IoT如何改变一切?
  18. 【好文】太用力的人跑不远
  19. DNS与HTTPDNS
  20. 关于PR安装在D盘初始化时闪退,加载到optical的时候PR直接闪退

热门文章

  1. 【华为大咖分享】5.交付在云端-全云DevOps研发实践(后附PPT下载地址)
  2. leetcode390(2022 1.2)
  3. java Stream 流
  4. Python输出帮助文档的方法及命令详解
  5. 数字图像处理 中值滤波 MATLAB实验
  6. VS Code解决Go相关工具无法安装问题
  7. Spark面对OOM问题的解决方法及优化总结
  8. servlet 接收request发送过来的多维数组_049 JAVA-Servlet
  9. 实习日志_实习律师实习日志第十八篇(连载30篇)
  10. 如何快速的入门git实现版本控制