二次剩余:
给定两个数n,P, P为一个质数,且 ,求一个x,使得
https://www.luogu.org/problem/P5491
题意:
求二次剩余
若有解,则按mod p后递增的顺序输出在mod p意义下的全部解.
若两解相同,只输出其中一个;
若无解,则输出Hola!
;
题解:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll w;
struct num{
ll x,y;
};
num mul(num a,num b,ll p)
{
num ans={0,0};
ans.x=((a.x*b.x%p+a.y*b.y%p*w%p)%p+p)%p;
ans.y=((a.x*b.y%p+a.y*b.x%p)%p+p)%p;
return ans;
}
ll powwR(ll a,ll b,ll p){
ll ans=1;
while(b