HDU1395 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
样例输入
2
5
样例输出
2^? mod 2 = 1
2^4 mod 5 = 1
题目分析
对于本题,要注意的点有:首先对于x的范围题目是没有给出的,所以不能想当然的假设把2^x设定在int或者long long的范围内用空间换时间的方法去做(对不起我踩坑了),再者,对于本题有一个概念性的知识点:多个数的积取余数等于这几个数分别取余数后的积的余数(几个数积的余数等于这几个数的余数的积的余数),这个概念可以使我们对一些情况进行优化,使得在计算很大的数的余数的时候不会溢出
代码:
#include<iostream>
#include<stdio.h>
using namespace std; int main(){
int n;
while(scanf("%d", &n) != EOF){
if(n == || n % == ) printf("2^? mod %d = 1\n", n); //偶数mod偶数余数不可能为1 任何数mod1 == 0
else{
int x = ;
int ans = ;
while(true){ //每次都将x * 2,然后对于x mod n(几个数积的余数等于这几个数余数的积的余数)
x *= ; //这样使得在数很大的时候不会溢出
ans++;
if(x % n == ){
printf("2^%d mod %d = 1\n", ans, n);
break;
}else{
x %= n;
}
}
}
}
return ;
}
HDU1395 2^x mod n = 1——积与余数的性质的更多相关文章
- HDU-1395 2^x mod n = 1
http://acm.hdu.edu.cn/showproblem.php?pid=1395 怎样取余是关键.. 2^x mod n = 1 Time Limit: 2000/1000 MS (Jav ...
- 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 t ...
- hdu-1395 2^x mod n = 1---求阶(欧拉函数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1395 题目大意: 题目中给出输入一个整数n,要求一个最小整数的x,使得2^x mod n=1; 解题 ...
- hdu1395 2^x mod n = 1(欧拉函数)
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因 ...
- JS写一个简单的程序,输入两个整数,打印这两个数的和,差,积,余数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- bzoj 2693: jzptab 线性筛积性函数
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 444 Solved: 174[Submit][Status][Discus ...
- D. Makoto and a Blackboard(积性函数+DP)
题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路 ...
- 洛谷 P4902 乘积 (约数筛,前缀和(积))
洛谷P4902乘积 题意简述: 给 $ t $ 组 $ (a,b) $ 求: $ \prod_{i=A}^{B}\prod_{j=1}^{i}(\frac{i}{j})^{\lfloor \frac{ ...
随机推荐
- Postgresql常用命令汇总
sudo -u postgres psql #进入postgresql ALTER USER postgres WITH password 'postgres'; #修改postgres用户密码 ps ...
- 使用vue搭建应用四引入axios
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 特性 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 P ...
- 【剑指offer】对称的二叉树
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 分析:从上到下直接遍历,利用栈或者队列暂存结点,注意结点的存和取都是成对的 c ...
- Three.js场景的基本组件
1.场景Scene THREE.Scene被称为场景图,可以用来保存所有图形场景的必要信息.每个添加到Scene的对象,包括Scene自身都继承自名为THREE.Object3D对象.Scene不仅仅 ...
- 我瞅瞅源码系列之---drf
我瞅瞅源码系列之---drf restful规范 从cbv到drf的视图 / 快速了解drf 视图 版本 认证 权限 节流 jwt 持续更新中...
- 2019vivo秋招提前批笔试题第3题
笔试的时候没做出来,就顺手截图了. 虽然知道要用动态规划做,但我一直就不太懂动态规划.笔试完又花了2小时把它做出来了.也不知道性能怎么样,但还好做出来了. def solution(n, toltal ...
- vim安装 YCM 过程记录
YCM(YouComplateMe) 属于Vim中大神级的插件,提供了类似于巨硬爸爸的VS中的代码补全,但是其安装方式也是比较复杂,因此特意写下一篇记录,记录下我自己如何安装这一插件的过程: 检查自己 ...
- Ambari深入学习(III)-开源使用及其改进思考
Ambari采用的不是一个新的思想和架构,也不是完成了软件的新的革命,而是充分利用了一些已有的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中做到了集群式服务管理能力.监控能力.展示能力.这些优 ...
- Angular—入门环境,项目创建,导入项目
1.安装 nodejs,npm nodejs 下载地址: https://nodejs.org/en/download/
- C# vb .net实现胶片效果滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的胶片效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...