题目简述:若你获得“超能力”:固定$n$,对任意$a$,可以快速求出$x \in [0, n)$(若存在),使得$x^2 \equiv a \pmod n$,若存在多个$x$满足条件,则返回其中一个(对固定的$a$返回固定的$x$)。给定$n \leq 2^{1024}$,求其质因数分解。保证$n$是至多$10$个不同质数之积。

解:code

令$f(a)$表示通过“超能力”获得的$x$(若存在),使得$x^2 \equiv a \pmod n$。

随机选择$x \in [1, n-1]$,令$y = f(x^2)$。

设$n = p_1 p_2 \dots p_k$,其中$p_1, p_2, \dots, p_k$是互不相同的质数,由中国剩余定理(Chinese Remainder Theorem)得

$$ y^2 \equiv x^2 \pmod n \Longleftrightarrow \begin{cases} y^2 \equiv x^2 \pmod {p_1} \\ \vdots \\ y^2 \equiv x^2 \pmod {p_k} \end{cases} $$

对每个质数$p_i$,$y^2 \equiv x^2 \pmod {p_i}$的解为$y \equiv x \pmod {p_i}$或$y \equiv -x \pmod {p_i}$。因此

$$ f(x^2) \equiv \pm x \pmod {p_i}. $$

于是,

$$ \Pr \Big[ f(x^2) \equiv x \pmod{p_i} \Big| p_i \not| x \Big] = \frac 1 2, $$

再由中国剩余定理可得

$$ \Pr \Big[ f(x^2) \equiv x \pmod n \Big| \gcd(x,n) = 1 \Big] = \frac 1 {2^k}. $$

也即,若$x$与$n$互质,即$\gcd(n, x) = 1$,则我们可以通过“超能力”得到$y \neq x$的概率为$1 - 2^{-k}$。

注:若把$x$与$n$互质的条件去掉,则类似可有

$$ \Pr \Big[ f(x^2) \equiv x \pmod n \Big] \leq \frac 1 2. $$

假设得到了一个$y = f(x^2) \neq x$,则$x^2 \equiv y^2 \pmod n$,则必定有$n = n_1n_2$,其中$n_1, n_2 > 1$,使得$x \equiv y \pmod {n_1}$但$x \not\equiv y \pmod {n_2}$,即$n_1 | (x-y)$但$n_2 \not| (x-y)$,又$\gcd(n_1,n_2) = 1$,故$\gcd(n, x-y) = n_1$。此时,我们已将$n$分解为更小的两个数的乘积。重复这个操作$k-1$次,便能得到$n$的质因数分解。

注:由于对称性,$\gcd(n, x-y)$与$\gcd(n, x+y)$在概率上性质是一样的。在$n$分解成若干个正整数之积后,以上分析依然适用于分解$n$的因子的情形。

CodeForces 1091G. New Year and the Factorisation Collaboration的更多相关文章

  1. CF 1091E New Year and the Factorisation Collaboration

    昨晚Good Bye 2018D题没做出来,车翻大了…… 官方题解      传送门 初赛知识:一个无向图所有顶点度数之和为偶数.然而这东西还有一个高端的名字:Handshaking lemma 但是 ...

  2. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  3. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  4. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  5. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  6. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  7. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  8. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  9. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

随机推荐

  1. hdu 1081 &amp; poj 1050 To The Max(最大和的子矩阵)

    转载请注明出处:http://blog.csdn.net/u012860063 Description Given a two-dimensional array of positive and ne ...

  2. Swift的两个小窍门

    一:查看Swift版本号(How do I see which version of Swift I’m using in Xcode?) 终端下输入:xcrun swift -version(in ...

  3. 基于TCP的通信程序设计

    套接字(Socket)是一种跨主机进程之间的双向通信接口,每个打开的套接字都可以通过一个套接字描述符来描述,因此可以使用低级文件编程库操作套接字. TCP是一中面向连接的网络传输控制协议.它每发送一个 ...

  4. 【上】安全HTTPS-全面具体解释对称加密,非对称加密,数字签名,数字证书和HTTPS

    一,对称加密 所谓对称加密.就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的步骤例如以下: 发送端和接收端首先要共享同样的密钥k(即通信前两方都须要知道相应 ...

  5. android Material

    目前已经两个团队做了不错的翻译 http://design.1sters.com/ http://www.ui.cn/Material/ https://github.com/stormzhang/9 ...

  6. 九度OJ 1123:采药 (01背包、DP、DFS)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2705 解决:1311 题目描述: 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师. 为此,他想拜附近最有威望的医师为师 ...

  7. 九度OJ 1114:神奇的口袋 (DFS、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:948 解决:554 题目描述: 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个 ...

  8. Timing breakdown phases explained

    https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#timing-explana ...

  9. Jquery跨域调用

    今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuer ...

  10. 04-树4 是否同一棵二叉搜索树(25 point(s)) 【Tree】

    04-树4 是否同一棵二叉搜索树(25 point(s)) 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和 ...