题目简述:若你获得“超能力”:固定$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. Codeforces初体验

    Codeforces印象 这两天抽时间去codeforces体验了一把. 首先,果然有众多大牛存在.非常多名人一直參加每周一次的比赛.积分2000+,并參与出题. 另外.上面题目非常多.预计至少一千题 ...

  2. bootstrap-data-target触发模态弹出窗元素的data使用 data-toggle与data-target的作用 深入ASP.NET MVC之九:Ajax支持 Asp.Net MVC4系列--进阶篇之AJAX

    bootstrap-data-target触发模态弹出窗元素的data使用 时间:2017-05-27 14:22:34      阅读:4479      评论:0      收藏:0      [ ...

  3. PC常用电源IC、MOS、三极管、二极管厂家

    笔记本常用MOS.三极管.二极管厂家: 1.EMC 杰力电子(台湾)官方网站:http://www.excelliancemos.com/tw/solution.php 2.UBIQ(台湾电源厂家UP ...

  4. kubernetes容器探针检测

    系列目录 kubernetes提供了livenessProbe(可用性探针)和readinessProbe(就绪性探针)对容器的健康性进行检测,当然这仅仅简单的关于可用性方面的探测,实际上我们不仅仅要 ...

  5. kubernetes之常见故障排除(一)

    系列目录 由由种种原因,在安装或者使用kubernetes的过程中,可能会遇到各种各样的问题.本篇按照官网的介绍罗列出一些常见的故障,以帮助快速解决一些常见的错误. 安装赛程中出现ebtables o ...

  6. Java Base64加密、解密原理Java代码(转载)

    博客来源:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是网络上最常见的用于传输8Bit字节代码的编码方 ...

  7. 【SVN版本回退】

    [SVN版本回退]根据想要回退的内容,然后选择revert to this revision或者revert changes from this revision.下面引用过来:譬如有个文件,有十个版 ...

  8. iOS开发中的单元测试(三)——URLManager中的测试用例解析

    本文转载至 http://www.cocoachina.com/cms/plus/view.php?aid=8088   此前,我们在<iOS开发中的单元测试(一)&(二)>中介绍 ...

  9. PHP基础函数、自定义函数以及数组

    2.10 星期五  我们已经真正开始学习PHP 了,今天的主要内容是php基础函数.自定义函数以及数组, 内容有点碎,但是对于初学者来说比较重要,下面是对今天所讲内容的整理:  1 php的基本语法和 ...

  10. Maximum likelihood from incomplete data via the EM algorithm (1977)

    Maximum likelihood from incomplete data via the EM algorithm (1977)