思路:\(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 + r_0) \% a == 0\ \&\&\ (r - r_0) \% b == 0\ ||\\ (r + r_0) \% b == 0 \ \&\&\ (r - r_0) \% a == 0,\)

也就是

\(r + r_0 = k1 * a\)

\(r - r_0 = k2 * b\)

\(k1 * a + k2 * b = 2 * r_0\)

于是枚举约数,\(exgcd\),然后答案扔到\(set\)里正好排序\(+\)去重。

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<set>
#define ll long long
#define rr register ll
#define R register int
using namespace std;
namespace Luitaryi {
template<class I> inline I g(I& x) { x=0; register I f=1;
register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*=f;
}
inline ll exgcd(int a,int b,ll& x,ll& y) {
if(!b) {x=1,y=0; return a;}
rr d=exgcd(b,a%b,y,x); y-=a/b*x; return d;
} int T; ll n,m,r0;
set<ll> s;
inline void solve(int a,int b,int c) {
rr x,y; rr d=exgcd(a,b,x,y); if(c%d) return ;
rr tmp,der=abs(b/d); x*=c/d; x=(x%der+der)%der; y=x; while(1) {
tmp=a*x-r0; if(tmp>=0) {
if(tmp>=n) break; s.insert(tmp);
} x+=der;
} x=y; while(1) {
tmp=a*x-r0; if(tmp<=n) {
if(tmp<0) break; s.insert(tmp);
} x-=der;
}
}
inline void main() {
while(g(m),g(n),g(r0),m||n||r0) {
s.clear(); s.insert(r0);
for(R i=1;i<=sqrt(n);++i) {
if(n%i==0) solve(i,n/i,2*r0),solve(n/i,i,2*r0);
} printf("Case %d:",++T);
for(set<ll>::iterator it=s.begin();it!=s.end();++it) printf(" %lld",*it); puts("");
}
}
} signed main() {Luitaryi::main(); return 0;}

2019.08.23

77

UVA1426 Discrete Square Roots的更多相关文章

  1. UVA 1426 - Discrete Square Roots(数论)

    UVA 1426 - Discrete Square Roots 题目链接 题意:给定X, N. R.要求r2≡x (mod n) (1 <= r < n)的全部解.R为一个已知解 思路: ...

  2. UVa 1426 Discrete Square Roots (扩展欧几里德)

    题意:给定 x,n,r,满足 r2 ≡ x mod(n) ,求在 0 ~ n 内满足 rr2 ≡ x mod(n) 的所有的 rr. 析:很明显直接是肯定不行了,复杂度太高了. r2 ≡ x mod( ...

  3. Discrete Square Roots UVALive - 4270(拓展欧几里得)

    a≡b(mod n)的含义是“a和b除以n的余数相同”,其充要条件是“a-b是n的整数倍”: 求所有满足条件r^2=x(mod m)的r 题目已经给定了一个初始的r,x,m #include < ...

  4. UVALive 4270 Discrete Square Roots

    题目描述: 在已知一个离散平方根的情况下,按照从小到大的顺序输出其他所有的离散平方根. 在模n意义下,非负整数x的离散平方根是满足0<=r<n且r2=x(mod n)的整数r. 解题思路: ...

  5. UVALive - 4270 Discrete Square Roots (扩展欧几里得)

    给出一组正整数$x,n,r$,使得$r^2\equiv x(mod\: n)$,求出所有满足该等式的$r$. 假设有另一个解$r'$满足条件,则有$r^2-r'^2=kn$ 因式分解,得$(r+r') ...

  6. Square roots

    Loops are often used in programs that compute numerical results by starting with an approximate answ ...

  7. 欧拉工程第64题:Odd period square roots

    题目链接 找循环位数是奇数的数有多少个 这个自己很难写出来,完全不能暴力 维基百科链接 维基百科上面说的很好,上面的算法实现就好了. 就是上面的 Java程序: package project61; ...

  8. [MIT6.006] 12. Square Roots, Newton's Method 平方根,牛顿法

    首先让我们回顾下上节课讲的,用牛顿法计算√2的内容: 简单来说,牛顿法从x0=1不断向后计算逼近√2的值,而刚开始计算的精度是1,随着牛顿法的逼近(共log2d个循环),就能使得√2逼近值的精度达到d ...

  9. uva 1426 离散平方根

    1426 - Discrete Square Roots Time limit: 3.000 seconds A square root of a number x <tex2html_verb ...

随机推荐

  1. wordpress 后台添加 快速编辑 栏目

    前两篇其实是同一篇,都是讲在后台添加菜单类型的http://www.ashuwp.com/courses/highgrade/664.htmlhttps://shibashake.com/wordpr ...

  2. IOS+H5页面自定义按钮无效

    在IOS整合H5页面的时候,自定义的按钮失去效果,Android系统可以. 如图,确定和取消按钮在IOS系统无效. 解决办法是在两个按钮上加上一个style属性即可 <span class=&q ...

  3. MH-P虚拟机DSR中安装SQL2008

    双击下载好的安装文件setup.exe.(注意:安装之前请确认是否有安装SQL Server 2008 R2需要的.NET Framework 3.5 SP1,我的环境由于之前有配置安装过,在这里不具 ...

  4. sql 时间获取

    现在时间:GETDATE() 昨天时间:CONVERT(VARCHAR(16),DATEADD(d,-1,GETDATE()),120)

  5. 关于MQ的几件小事(四)如何保证消息不丢失

    1.mq原则 数据不能多,也不能少,不能多是说消息不能重复消费,这个我们上一节已解决:不能少,就是说不能丢失数据.如果mq传递的是非常核心的消息,支撑核心的业务,那么这种场景是一定不能丢失数据的. 2 ...

  6. restTemplate源码解析(一)构造restTemplate的Bean实例

    所有文章 https://www.cnblogs.com/lay2017/p/11740855.html 正文 构造一个restTemplate的Bean实例很容易,只需这样配置 @Bean publ ...

  7. Array + two points leetcode.15-3Sum

    题面 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Fi ...

  8. WordPress,SAP Kyma和微信三者的集成

    我们来继续学习如何在实战中使用SAP Kyma. Jerry在之前的文章里,分别介绍了如何本地搭建WordPress实例: 什么?在SAP中国研究院里还需要会PHP开发? 以及如何把这个本地搭建的Wo ...

  9. python 解析Hdfs上的数据文件

    python想直接读取hadoop上的文件内容,一番操作,头发掉了几根,也没能解析出来parquet文件类型的文件. 本博文简单讲解一下TEXTFILE文件格式的解析: 需要安装模块hdfs from ...

  10. 【python+ddt】DDT模块的使用

    ddt模块包含了一个类的装饰器ddt和两个方法的装饰器: data:包含多个你想要传给测试用例的参数: file_data:会从json或yaml中加载数据: unpanck:通常data中包含的每一 ...