2019牛客多校第九场B Quadratic equation(二次剩余定理)题解
题意:
传送门
已知\(0 <= x <= y < p, p = 1e9 + 7\)且有
\((x+y) = b\mod p\)
\((x\times y)=c\mod p\)
求解任意一对\(x,y\),不存在输出\(-1\ -1\)。
思路:
由两式变化可得\((y - x)^2 = (b^2 -4c + p) \% p \mod p\),那么可以应用二次剩余定理解得\(y - x\)的值,我们可以知道\((x+y) = b\)或者\((x+y) = b + p\),那么直接求解即可。
代码:
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<ctime>
#include<cmath>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 5e4 + 5;
const int INF = 0x3f3f3f3f;
const ull seed = 131;
const ll MOD = 1e9 + 7;
using namespace std;ll ppow(ll a, ll b, ll mod){ll ret = 1;a = a % mod;while(b){if(b & 1) ret = ret * a % mod;a = a * a % mod;b >>= 1;}return ret;
}
struct TT{ll p, d;
};
ll w;
TT mul_er(TT a, TT b, ll mod){TT ans;ans.p = (a.p * b.p % mod + a.d * b.d % mod * w % mod) % mod;ans.d = (a.p * b.d % mod + a.d * b.p % mod) % mod;return ans;
}
TT power(TT a, ll b, ll mod){TT ret;ret.p = 1, ret.d = 0;while(b){if(b & 1) ret = mul_er(ret, a, mod);a = mul_er(a, a, mod);b >>= 1;}return ret;
}
ll legendre(ll a, ll p){return ppow(a, (p - 1) >> 1, p);
}
ll modulo(ll a, ll mod){a %= mod;if(a < 0) a += mod;return a;
}
ll solve(ll n, ll p){ //x^2 = n mod pif(n == 0) return 0;if(n == 1) return 1;if(p == 2) return 1;if(legendre(n, p) + 1 == p) return -1; //无解ll a = -1, t;while(true){a = rand() % p;t = a * a - n;w = modulo(t, p);if(legendre(w, p) + 1 == p) break;}TT temp;temp.p = a;temp.d = 1;TT ans = power(temp, (p + 1) >> 1, p);return ans.p;
}
bool getans(ll sum, ll dec, ll &x, ll &y){if((sum + dec) % 2 == 0){y = (sum + dec) / 2;x = y - dec;if(x >= 0 && x + y == sum && y < MOD) return true;else return false;}else return false;
}
int main(){int T;scanf("%d", &T);while(T--){ll b, c;scanf("%lld%lld", &b, &c);ll d = solve((b * b % MOD - 4 * c % MOD + MOD) % MOD, MOD);if(d == -1){printf("-1 -1\n");continue;}ll x, y;if(getans(b, d, x, y)){printf("%lld %lld\n", x, y);}else if(getans(b + MOD, d, x, y)){printf("%lld %lld\n", x, y);}else if(getans(b, MOD - d, x, y)){printf("%lld %lld\n", x, y);}else if(getans(b + MOD, MOD - d, x, y)){printf("%lld %lld\n", x, y);}}return 0;
}
转载于:https://www.cnblogs.com/KirinSB/p/11365909.html
2019牛客多校第九场B Quadratic equation(二次剩余定理)题解相关推荐
- 2019牛客多校第九场AThe power of Fibonacci(广义BM)
2019牛客多校第九场AThe power of Fibonacci(广义BM) 题目大意 求斐波那契数列m次方的前n项和 解题思路 显然,斐波那契的m次方前缀和依然是线性递推,因此考虑用exBM求解 ...
- Quadratic equation(二次剩余)2019牛客多校第九场
链接:https://ac.nowcoder.com/acm/contest/889/B 来源:牛客网 题目描述 Amy asks Mr. B problem B. Please help Mr. B ...
- 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
看到题解说二分 心里也有数了..... H Cutting Bamboos 给了一些高度得柱子 每区间你可以坎y次 y次之后 必须砍没有了 没有砍 总长度得一样 问第x次砍得高度在哪里 因为砍得次数 ...
- 2019牛客多校第九场AThe power of Fibonacci——扩展BM
题意 求斐波那契数列m次方的前n项和,模数为 $1e9$. 分析 线性递推乘线性递推仍是线性递推,所以上BM. 由于模数非质数,上扩展版的BM. 递推多少项呢?本地输入发现最大为与前57项有关(而且好 ...
- 2019牛客多校第一场
2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...
- Cutting Bamboos(牛客多校第九场H主席树+二分+思维)
链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 There are n bamboos arranged in a line. The i-th ...
- 2019 牛客多校第二场 4/10
题会慢慢补完的,最近在帮别人上课,补题速度很慢,一边看ppt一边刷ppt的题还要补多校的,感觉有点应付不过来,不过以后会慢慢补完的(指整个暑假) A 这场出题人的英文水平真的搞事,不说了((( 这题起 ...
- 2019 牛客多校第一场 F Random Point in Triangle
题目链接:https://ac.nowcoder.com/acm/contest/881/F 题目大意 给定二维平面上 3 个整数表示的点 A,B,C,在三角形 ABC 内随机选一点 P,求期望$E ...
- 2019 牛客多校第一场 E ABBA
题目链接:https://ac.nowcoder.com/acm/contest/881/E 题目大意 问有多少个由 (n + m) 个 'A' 和 (n + m) 个 'B',组成的字符串能被分割成 ...
- 牛客多校第九场 H Cutting Bamboos —— 主席树
题目链接:点我啊╭(╯^╰)╮ 题目大意: 给你一片竹林,编号 1 1 1 到 n n n ,给定初始高度 每次查询区间,问一共砍 y y y 刀的时候,第 x x x 刀的高度 要求 ...
最新文章
- 牧小熊:Adobe Illustrator 在科研作图中的应用!
- 在2020年,你觉得计算机视觉有哪些值得研究的领域?
- (chap3 数据链路) 数据链路概览
- 台式电脑可以连wifi吗_不使用WIFI,手机也可以通过电脑的网络上网
- python-操作xml格式的文件
- vlan划分_什么样的网络需要划分VLAN?
- fastclick.js插件使用简单说明
- 【学习OpenCV4】OpenCV4入门介绍
- 什么是光纤?光纤的原理是什么?你能想象没有光纤通讯的世界么?
- php strpos注意问题坑,strpos函数的坑
- 计算机组成原理和微机原理实验报告,《计算机组成原理》实验指导.doc
- PMSM学习笔记1——永磁同步电机的工作原理与数学模型
- 意识的哲学、生理及智能属性研究
- 有没有什么好的可以做读书笔记的APP推荐?
- 图文并茂——从Kubernetes的诞生背景到什么是Kubernetes, 带你深度解析Kubernetes
- ansible从入门到放弃
- 第28课:彻底解密Spark Sort-Based Shuffle排序具体实现内幕和源码详解
- 以后数据收集、共享、查询全靠它了,太高效!
- 质数/素数筛选c++超简单版写法
- cs230 deeplearning.ai 1: Standard NN