Quadratic equation
牛客多校九B
给定
$(x+y)\%mod=b$
$(x*y)\%mod=c$
求 $x,y$
二次剩余
求$((x-y)^{2})\%mod = (b\times b-4\times c)\%mod$
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=;
ll qp(ll a, ll b, ll c)
{
ll ans = ;
while (b)
{
if (b % == )ans = (ans*a) % c;
b /= ;
a = (a*a) % c;
}
return ans;
} ll p=mod;
ll w;//二次域的D值
bool ok;//是否有解 struct QuadraticField//二次域
{
ll x, y;
QuadraticField operator*(QuadraticField T)//二次域乘法重载
{
QuadraticField ans;
ans.x = (this->x*T.x%p + this->y*T.y%p*w%p) % p;
ans.y = (this->x*T.y%p + this->y*T.x%p) % p;
return ans;
}
QuadraticField operator^(ll b)//二次域快速幂
{
QuadraticField ans;
QuadraticField a = *this;
ans.x = ;
ans.y = ;
while (b)
{
if (b & )
{
ans = ans*a;
b--;
}
b /= ;
a = a*a;
}
return ans;
}
}; ll Legender(ll a)//求勒让德符号
{
ll ans=qp(a, (p - ) / , p);
if (ans + == p)//如果ans的值为-1,%p之后会变成p-1。
return -;
else
return ans;
} ll Getw(ll n, ll a)//根据随机出来a的值确定对应w的值
{
return ((a*a - n) % p + p) % p;//防爆处理
} ll solve(ll n)
{
ll a;
if(n==)
return ;
if (p == )//当p为2的时候,n只会是0或1,然后0和1就是对应的解
return n;
if (Legender(n) == -)//无解
ok = false;
srand((unsigned)time(NULL));
while ()//随机a的值直到有解
{
a = rand()%p;
w = Getw(n, a);
if (Legender(w) == -)
break;
}
QuadraticField ans,res;
res.x = a;
res.y = ;//res的值就是a+根号w
ans = res ^ ((p + ) / );
return ans.x;
} int main()
{
ll q;
scanf("%lld",&q);
ll a,b,n,ans1,ans2;
ll inv2=qp(,mod-,mod);
while (q--)
{ scanf("%lld%lld",&a,&b); ok = true;
n=(a*a%mod-*b%mod+mod)%mod; ans1 = solve(n); ans2 = p - ans1;//一组解的和是p
if (!ok)
{
cout<<-<<' '<<-<<'\n';
}
else
{
ll x=(ans1+a)%p*inv2%p;
ll y=(a-x+p)%p;
printf("%lld %lld\n", min(x,y),max(x,y) );
}
}
}
Quadratic equation的更多相关文章
- 蓝桥杯--Quadratic Equation
蓝桥杯--Quadratic Equation 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式:输入只有一行,包括三个系数,之间用空格格开. ...
- C语言 · Quadratic Equation
算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意 ...
- Java实现 蓝桥杯VIP 算法提高 Quadratic Equation
算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...
- 第八届山东ACM省赛F题-quadratic equation
这个题困扰了我长达1年多,终于在今天下午用两个小时理清楚啦 要注意的有以下几点: 1.a=b=c=0时 因为x有无穷种答案,所以不对 2.注意精度问题 3.b^2-4ac<0时也算对 Probl ...
- 2019牛客暑期多校训练营(第九场)Quadratic equation——二次剩余(模奇素数)
题意:给定p=1e9+7,构造x,y使其满足(x+y) mod p = b,(x*y) mod p = c . 思路:不考虑取模的情况下, .在取模的意义下,,因为a是模p的二次剩余的充分必要条件为 ...
- 2019牛客暑期多校训练营(第九场)B:Quadratic equation (二次剩余求mod意义下二元一次方程)
题意:给定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: 全部部分都要 ...
- 2019牛客暑期多校训练营(第九场) - B - Quadratic equation - 二次剩余
https://ac.nowcoder.com/acm/contest/889/B 假如我们能够求出 \(x-y\) 在模p意义的值,那么就可以和 \(x+y\) 联立解出来了. 由于 \((x-y) ...
- 牛客多校第九场 B Quadratic equation 模平方根
题意: 已知 $x+y$ $mod$ $q = b$ $x*y$ $mod$ $q = c$ 已知b和c,求x和y 题解: 容易想到$b^2-4c=x^2-2xy+y^2=(x-y)^2$ 那么开个根 ...
- 2019牛客暑期多校训练营(第九场)B Quadratic equation (平方剩余)
\((x+y)\equiv b\pmod p\) \((x\times y)\equiv c\pmod p\) 由第一个式子可知:\(x+y=b~or~x+y=b+p\) 先任选一个代入到第二个式子里 ...
随机推荐
- 第四周课程总结&第二次实验报告
实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...
- Linux /dev/shm
/dev/shm是Linux下的一个目录,/dev/shm目录不在磁盘上,而是在内存中,因此使用Linux /dev/shm的效率非常高,直接写进内存 可以通过两个脚本验证Linux /dev/shm ...
- 前端导出excel文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Square HDU 1518 搜索
Square HDU 1518 搜索 题意 原题链接 给你一定若干个木棒,让你使用它们组成一个四边形,要求这些木棒必须全部使用. 解题思路 木棒有多种组合方式,使用搜索来进行寻找,这里需要进行优化,不 ...
- uboot初识
一. 什么是uboot 1.1. uboot的由来 1.1.1. uboot是SourceForge上的开源项目 1.1.2. uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而 ...
- 遍历文件夹下的csv,把数据读进一张表
import pandas as pd import os if __name__ == '__main__': Path = 'c:\checklog' dfs = [] for dir_path, ...
- Python 流程控制 超全解析(不可错过)
流程控制 程序执行结构流程 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和 ...
- 【已解决】Error running 'xxx项目' Command line is too long(idea版)
[错误] Error running 'xxx项目': Command line is too long. Shorten command line for xxx or also for Sprin ...
- 算法(C#版)动态规划和贪心算法
https://blog.csdn.net/kouzhuanjing1849/article/details/88954811
- 在.NET使用Newtonsoft.Json转换,读取,写入json
首先,大家要明白什么是json,了解更多关于json方面资料大家可以点击https://www.ibm.com/developerworks/cn/web/wa-lo-json/ ,我在这里简单介绍下 ...