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的更多相关文章

  1. 蓝桥杯--Quadratic Equation

    蓝桥杯--Quadratic Equation 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式:输入只有一行,包括三个系数,之间用空格格开. ...

  2. C语言 · Quadratic Equation

    算法提高 Quadratic Equation   时间限制:1.0s   内存限制:512.0MB      问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意 ...

  3. Java实现 蓝桥杯VIP 算法提高 Quadratic Equation

    算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...

  4. 第八届山东ACM省赛F题-quadratic equation

    这个题困扰了我长达1年多,终于在今天下午用两个小时理清楚啦 要注意的有以下几点: 1.a=b=c=0时 因为x有无穷种答案,所以不对 2.注意精度问题 3.b^2-4ac<0时也算对 Probl ...

  5. 2019牛客暑期多校训练营(第九场)Quadratic equation——二次剩余(模奇素数)

    题意:给定p=1e9+7,构造x,y使其满足(x+y) mod p = b,(x*y) mod p = c . 思路:不考虑取模的情况下, .在取模的意义下,,因为a是模p的二次剩余的充分必要条件为  ...

  6. 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: 全部部分都要 ...

  7. 2019牛客暑期多校训练营(第九场) - B - Quadratic equation - 二次剩余

    https://ac.nowcoder.com/acm/contest/889/B 假如我们能够求出 \(x-y\) 在模p意义的值,那么就可以和 \(x+y\) 联立解出来了. 由于 \((x-y) ...

  8. 牛客多校第九场 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$ 那么开个根 ...

  9. 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\) 先任选一个代入到第二个式子里 ...

随机推荐

  1. Python_ONLINE_习题集_1 递归

    1.1 使用递归实现:计算某个数的阶乘 def func(x): if x == 2: return 2 else: return x*func(x-1) a = func(4) print(a) 2 ...

  2. 第五周课程总结&实验报告(三)

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...

  3. sql limit order by and where

    1 sql limit limit size,返回前size行. limit offset , size,返回offset开始的size行,offset从0行开始. 2 sql limit with ...

  4. 在excel中如何计算两个时间之间的差[转]

    因为时间是由序列号所代表的,用户可以用较晚的时间减去较早的时间以得到间隔.例如,单元格A3含有5:30,单元格B3含有14:00,下面的公式返回8:30(间隔8小时30分). =B3-A3 然而,如果 ...

  5. [BZOJ3451]Normal(点分治+FFT)

    [BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心.定义消耗时间为每层分治的子树大小之和,求消耗时间的期望. 分析 根据 ...

  6. [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)

    [51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的 ...

  7. [集合]Map

      Map集合的功能概述 a:添加功能 * V put(K key,V value):添加元素.* 如果键是第一次存储,就直接存储元素,返回null * 如果键不是第一次存在,就用值把以前的值替换掉, ...

  8. idea 代码部分格式化

    效果: 处理Idea使用ctrl+alt+L进行代码格式化时部分代码可以被忽略,不执行格式化功能(webstorm,phpstorm同理) 原因: 有时希望自己写的一些代码不被格式化,或者发现格式化后 ...

  9. hive中的索引创建

    1.在hive中创建索引所在表 create table if not exists h_odse.hxy(id int,name string,hobby array<string>,a ...

  10. SCUT - 484 - 平面上的点 - 数据结构

    https://scut.online/p/484 一开始想的是按固定斜率的直线从无穷扫下来,但是一直都WA,不知道是哪里错了还是精度问题? #include<bits/stdc++.h> ...