ZOJ 1489 HDU1395 2^x mod n = 1 数学】的更多相关文章

2^x mod n = 1 Time Limit: 2 Seconds      Memory Limit:65536 KB Give a number n, find the minimum x that satisfies 2^x mod n = 1. Input One positive integer on each line, the value of n. Output If the minimum x exists, print a line with 2^x mod n = 1.…
对于数论的学习比较的碎片化,所以开了一篇随笔来记录一下学习中遇到的一些坑,主要通过题目来讲解 本题围绕:积与余数 HDU1395 2^x mod n = 1 题目描述 输入一个数n,如果存在2的x次方mod输出的n余数为1,则输出2^x mod n = 1,否则输出2^? mod n = 1,其中n替换为每次输出的n的具体数值 输入 正整数n,读取到文件尾 输出 2^x mod n = 1或者2^? mod n = 1 样例输入 25 样例输出 2^? mod 2 = 1 2^4 mod 5 =…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=489 题目大意: 给你正整数n,求最小的x使得2^x mod n = 1. 思路: n=1无解.任何正数mod 1都为0吧 n为偶数无解,why? 上式可变形为: 2^x=k*n+1,若n为偶数那么k*n+1为奇数,而2^x必为偶数. n为奇数一定有解,对于乘法逆元:在a mod n的操作下,a存在乘法逆元当且仅当a与n互质. #include<cstdio> int mai…
http://acm.hdu.edu.cn/showproblem.php?pid=1395 怎样取余是关键.. 2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9534    Accepted Submission(s): 2932 Problem Description Give a number n,…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1395 题目大意: 题目中给出输入一个整数n,要求一个最小整数的x,使得2^x mod n=1; 解题思路: 2^x = 1(mod n)就是求2模上n的阶. 传送门:阶与原根 如果n是偶数或者是1,答案一定不存在 如果是偶数,2^x也是偶数,偶数模上偶数不可能为1. 如果n为1,那么模的结果一定为0. 如果n是奇数,那么可以求阶,也可以暴力(数据水) 求阶的方法: #include<bits/st…
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20133    Accepted Submission(s): 6321 Problem Description Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1.   I…
主题链接: PKU:http://poj.org/problem?id=3652 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=1933 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2721 Description WhatNext Software creates sequence generators that they hope will produce fai…
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19825 这道题和http://www.cnblogs.com/qlky/p/5022649.html一样,而且更简单 但是ZOJ那道题是输出MOD的结果,所以实际上结果是非常大的,这里没有MOD,所以要用大数 大数待续..…
在说明Hill加密之前要先复习线性代数的知识,主要是关于矩阵的一些运算和概念. 一.矩阵的逆: 定义方阵M的逆矩阵应该满足M*M^-1==I,其中I是单位矩阵,比如: 但是这个地方是对英文字母进行加密,所以矩阵中的数字都是模26的值,比如:   *  = 这个地方结果就应该mod26, 最后结果就是: 那么上面两个相乘的矩阵就互为逆矩阵. 这个地方要多说一下密码学中的mod运算,数学中-5%26结果肯定是-5,但是这个地方我们取值只能在0-25之间,所以-5%26的结果应该是21. 求解一个方阵…
在解决这个问题之前,我们先了解几个概念? 一.原码, 反码, 补码的概念 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负数的补码:其反码+1. 做个小Demo,分别写出7和-7的原码.反码.补码.(其中第一位是符号位,0表示正数,1表示负数) Demo 7 -7 原码 00000111 10000111 反码 00000111 11111000 补码 00000111 11111001   一. 机器数和真值 在学习…