#L2045. 「CQOI2016」密钥破解

    ID: 4576 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>其他数学数论欧几里得算法大整数质因数分解

「CQOI2016」密钥破解

题目描述

一种非对称加密算法的密钥生成过程如下:

  1. 任选两个不同的质数 pp, qq
  2. 计算 N=pqN = pq, r=(p1)(q1)r = (p-1)(q-1)
  3. 选取小于 rr,且与 rr 互质的整数 ee
  4. 计算整数 dd,使得 ed1(modr)ed \equiv 1 \pmod r
  5. 二元组 (N,e)(N, e) 称为公钥,二元组 (N,d)(N, d) 称为私钥。

当需要加密消息 nn 时(假设 nn 是一个小于 NN 的整数,因为任何格式的消息都可转为整数表示),使用公钥 (N,e)(N, e),按照 [ n^e \equiv c \pmod N ] 运算,可得到密文 cc

对密文 cc 解密时,用私钥 (N,d)(N, d),按照 [ c^d \equiv n \pmod N ] 运算,可得到原文 nn。算法正确性证明省略。

由于用公钥加密的密文仅能用对应的私钥解密,而不能用公钥解密,因此称为非对称加密算法。通常情况下,公钥由消息的接收方公开,而私钥由消息的接收方自己持有。这样任何发送消息的人都可以用公钥对消息加密,而只有消息的接收方自己能够解密消息。

现在,你的任务是寻找一种可行的方法来破解这种加密算法,即根据公钥破解出私钥,并据此解密密文。


输入格式

输入文件内容只有一行,为空格分隔的三个正整数 ee, NN, cc


输出格式

输出文件内容只有一行,为空格分隔的两个整数 dd, nn


样例

输入

3 187 45

输出

107 12

样例中 p=11p = 11, q=17q = 17


数据范围与提示

  • 对于 30%30\% 的数据,e,N,c220e, N, c \leq 2^{20}
  • 对于 100%100\% 的数据,1e,N,c2621 \leq e, N, c \leq 2^{62}, c<Nc < N