UVA 1426 - Discrete Square Roots(数论)】的更多相关文章

UVA 1426 - Discrete Square Roots 题目链接 题意:给定X, N. R.要求r2≡x (mod n) (1 <= r < n)的全部解.R为一个已知解 思路: r2≡x (mod n)=>r2+k1n=x 已知一个r!,带入两式相减得 r2−r12=kn => (r+r1)(r−r1)=kn 枚举A,B,使得 A * B = n (r + r1)为A倍数 (r - r1)为B倍数 这样就能够推出 Aka−r1=Bkb+r1=r => Aka=Bk…
题意:给定 x,n,r,满足 r2 ≡ x mod(n) ,求在 0 ~ n 内满足 rr2 ≡ x mod(n) 的所有的 rr. 析:很明显直接是肯定不行了,复杂度太高了. r2 ≡ x mod(n)  (1) rr2 ≡ x mod(n)  (2)用 (2)- (1)得到 rr2 - r2 ≡ 0 mod (n) (rr + r)*(rr - r) ≡ 0 mod (n), 可以得到 (rr + r)*(rr - r) = k * n. 假设  n = a * b, 那么 可以知道 (rr…
a≡b(mod n)的含义是“a和b除以n的余数相同”,其充要条件是“a-b是n的整数倍”: 求所有满足条件r^2=x(mod m)的r 题目已经给定了一个初始的r,x,m #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #i…
题目描述: 在已知一个离散平方根的情况下,按照从小到大的顺序输出其他所有的离散平方根. 在模n意义下,非负整数x的离散平方根是满足0<=r<n且r2=x(mod n)的整数r. 解题思路: 假设要求的一个离散平方根为r1,则有: r2=x(mod n) r12=x(mod n) 两式相减可得: r2-r12=0(mod n) 即: r2-r12=kn 令: a*b=n 则有: r-r1=0(mod a) r+r1=0(mod b) 即: r-r1=k1a r+r1=k2b 两式相加可得: k1…
给出一组正整数$x,n,r$,使得$r^2\equiv x(mod\: n)$,求出所有满足该等式的$r$. 假设有另一个解$r'$满足条件,则有$r^2-r'^2=kn$ 因式分解,得$(r+r')(r-r')=kn$ 将$n$分解成$a*b$,则有$\left\{\begin{matrix}r+r'=xa\\ r-r'=yb\end{matrix}\right.$ 两式相加得$2r=xa+yb$,这是一个二元线性不定方程,可用扩欧求出x的通解. 假设已经求出了$x$的通解$x=x_{0}+k…
思路:\(exgcd\) 提交:\(2\)次 错因:输出格式错误OTZ 题解: 求:\(r^2 ≡ x \mod N , 0 \leq r < N\),并且题目会给出 \(x,N\) 和一个合法的\(r_0\). 原式可以转化为 \(r^2-r_0^2\equiv 0 \mod N\) 即 \((r+r_0)*(r-r_0) \equiv 0 \mod N\) 可以得到 \((r + r_0)*(r - r_0) = k * n\) 假设 \(n = a * b\), 那么 可以知道 \((r…
1426 - Discrete Square Roots Time limit: 3.000 seconds A square root of a number x <tex2html_verbatim_mark>is a number r <tex2html_verbatim_mark>such that r2 = x <tex2html_verbatim_mark>. A discrete square root of a non-negative integer …
Loops are often used in programs that compute numerical results by starting with an approximate answer and iteratively improving it. For example, one way of computing square roots is Newton’s method. Suppose that you want to know the square root of a…
题目链接:uva 11246 - K-Multiple Free set 题目大意:给定n,k.求一个元素不大于n的子集,要求该子集的元素尽量多,而且不含两个数满足a∗k=b. 解题思路:容斥原理.f(i)=(−1)inki,取f函数的和就可以. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; ll solve (ll…
题目链接:uva 11300 - Spreading the Wealth 题目大意:有n个人坐在圆桌旁,每个人有一定的金币,金币的总数可以被n整除,现在每个人可以给左右的人一些金币,使得每个人手上的金币数量相等,问说最少移动的金币数额. 解题思路:假设xi为第i个人给左手边人的金币数量,那么就有a[i] - x[i]+ x[i + 1] = aver.那么 a[1] - x[1] + x[2] = aver -> x2 = aver - a[1] + x[1]  -> x[2]= x[1]…