题意:给定p=1e9+7,A,B。  求一对X,Y,满足(X+Y)%P=A; 且(X*Y)%P=B;

思路:即,X^2-BX+CΞ0;  那么X=[B+-sqrt(B^2-4C)]/2;

全部部分都要在modP意义下,所以求一个x满足x^2%p=B^2-4C,这个用二次剩余求即可。

套了模板。

#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+;
typedef long long ll;
int k; ll a,p,w;
struct T{ll x,y;};
T mul_two(T a,T b,ll p)
{
T ans;
ans.x=(a.x*b.x%p+a.y*b.y%p*w%p)%p;
ans.y=(a.x*b.y%p+a.y*b.x%p)%p;
return ans;
}
T qpow_two(T a,ll n,ll p)
{
T ans; ans.x=; ans.y=;
while(n){
if(n&) ans=mul_two(ans,a,p);
n>>=;
a=mul_two(a,a,p);
}
return ans;
}
ll qpow(ll a,ll n,ll p)
{
ll ans=; a%=p;
while(n){
if(n&) ans=ans*a%p;
n>>=;a=a*a%p;
}
return ans%p;
}
ll Legendre(ll a,ll p)
{
return qpow(a,(p-)>>,p);
}
int solve(ll n,ll p)
{
n%=p; if(p==) return ;
if(Legendre(n,p)+==p) return -;
else if(n==) return ;
ll a=;
while(Legendre((a*a-n+p)%p,p)+!=p) a=rand()%p;
T tmp; tmp.x=a; tmp.y=; w=(a*a-n+p)%p;//W
T ans=qpow_two(tmp,(p+)>>,p);
return ans.x;
}
int main()
{
scanf("%d",&k); ll rev2=;
while(k--){
ll b,c;
scanf("%lld%lld",&b,&c);
ll t=((b*b-c*)%mod+mod)%mod;
ll d=solve(t,mod);
if(d==-){
printf("-1 -1\n");
continue;
}
ll x=(b+d)*rev2%mod,y=(b-x+mod)%mod;
if(x>y) swap(x,y);
printf("%lld %lld\n",x,y);
}
return ;
}

最新文章

  1. Android 使用pull,sax解析xml
  2. MVC View中获取action、controller、area名称
  3. myeclipse给项目改了名字,但部署tomcat的项目名还是原来的
  4. [转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。
  5. java实现MD5加密
  6. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
  7. Linux下编译OpenSSL
  8. CV牛人牛事简介之一
  9. form 转json最佳示例
  10. 特殊字符html,css转义大全
  11. swift3.0 底部弹出菜单 UIAlertController的使用
  12. 强大的桌面用 PDF 重排工具:K2pdfopt 简明教程
  13. 【java学习笔记】文件操作
  14. java语言为什么能跨平台
  15. web.xml中使用web前缀配置无法访问controller
  16. python学习之基本数据类型
  17. node模块之path——path.join和path.resolve的区别
  18. csp 通信网络
  19. Django 之 分页
  20. js数组的splice函数

热门文章

  1. 阉割的List
  2. AKKA事件机制
  3. Modbus 协议-Ascii,RTU
  4. 概述UML——UML系列篇一
  5. C#读写设置修改调整UVC摄像头画面-对比度
  6. xml文件操作帮助类
  7. 几分钟打造超级好看又好用的zsh command line环境
  8. JavaWeb分页-----PageBean.java
  9. 【转】Webpack 快速上手(下)
  10. 封装axios,带请求头和响应头