CodeForces 1091G. New Year and the Factorisation Collaboration
题目简述:若你获得“超能力”:固定$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的更多相关文章
- CF 1091E New Year and the Factorisation Collaboration
昨晚Good Bye 2018D题没做出来,车翻大了…… 官方题解 传送门 初赛知识:一个无向图所有顶点度数之和为偶数.然而这东西还有一个高端的名字:Handshaking lemma 但是 ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
随机推荐
- cas 单点登录(SSO)之中的一个: jasig cas-server 安装
cas 单点登录(SSO)实验之中的一个: jasig cas-server 安装 參考文章: http://my.oschina.net/indestiny/blog/200768#comments ...
- mysql服务停止
mysql链接方式分为 tcp链接和 sock链接, 你刚才看到服务停止了还能链接 那种会员是 sock的会话模式 所以需要把所有链接mysql的进程结束掉,才能启动起来的 windows ...
- vs2012 MinGW编译ffmpeg 出现libavdevice/avdevice.c(38) : error C2059: 语法错误:“.”
利用vs2012编译ffmpeg出现以下错误: libavdevice/avdevice.c(38) : error C2059: 语法错误:“.” libavdevice/avdevice.c(40 ...
- ZipOutputStream 用法 小计
ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile)); 构造函数之后 文件就已经创建出来了 只是 0kb s.Write(bu ...
- [Maven实战](9)传递性依赖
了解Spring的朋友都知道.创建一个Spring Framework项目都须要依赖什么样的Jar包.假设不使用Maven,那么在项目中就须要手动下载相关的依赖.因为Spring Framework又 ...
- .Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点
除了使用.net里面提供的内置处理程序来处理我们的自定义节点外,我们还可以通过多种方法,来自己定义处理类处理我们的自定义节点,本文主要介绍通过实现IConfigurationSectionHandle ...
- LeetCode(125)题解--Valid Palindrome
https://leetcode.com/problems/valid-palindrome/ 题目: Given a string, determine if it is a palindrome, ...
- OTL中文乱码 OTL UTF8
在用unixODBC连接MySQL的时候字符编码是由odbc支持的,不须要C++编译OTL的时候加上什么编译条件. 假设你的数据库使用的编码是UTF-8,你要从这个数据库读数据.并且还要将结果放到这个 ...
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
出现问题 我们在做流媒体开发的过程中,进程会出现摄像机RTSP流莫名其妙无法播放的问题,而我们常用的vlc经常是直接弹出一个无法播放的提示框就完事了,没有说明出错的原因,或者在vlc的消息里面能看到日 ...
- 九度OJ 1136:Number Steps(步数) (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:691 解决:412 题目描述: Starting from point (0,0) on a plane, we have written ...