对于数论的学习比较的碎片化,所以开了一篇随笔来记录一下学习中遇到的一些坑,主要通过题目来讲解

本题围绕:积与余数

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——积与余数的性质的更多相关文章

  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 ...

  2. 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 ...

  3. hdu-1395 2^x mod n = 1---求阶(欧拉函数)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1395 题目大意: 题目中给出输入一个整数n,要求一个最小整数的x,使得2^x mod n=1; 解题 ...

  4. 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 ...

  5. Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因 ...

  6. JS写一个简单的程序,输入两个整数,打印这两个数的和,差,积,余数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. bzoj 2693: jzptab 线性筛积性函数

    2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 444  Solved: 174[Submit][Status][Discus ...

  8. D. Makoto and a Blackboard(积性函数+DP)

    题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路 ...

  9. 洛谷 P4902 乘积 (约数筛,前缀和(积))

    洛谷P4902乘积 题意简述: 给 $ t $ 组 $ (a,b) $ 求: $ \prod_{i=A}^{B}\prod_{j=1}^{i}(\frac{i}{j})^{\lfloor \frac{ ...

随机推荐

  1. Xcode 导出C++项目在其他电脑执行

    1.  先找到C++项目的可执行文件的位置 https://blog.csdn.net/qq_34759481/article/details/82700587 2.  关于存储和加载文件的目录,使用 ...

  2. [Python] 项目的配置覆盖与合并

    参考来源: https://www.liaoxuefeng.com/wiki/1016959663602400/1018490750237280 代码稍微修改了一下 import os import ...

  3. spring boot2X整合Consul一服务注册与发现

    Consul 是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置. 关键特性: 服务注册/发现 数据强一致性保证 多数据中心 健康检查 key/value存储 1.下载 htt ...

  4. 启动Tomcat时报异常org.apache.catalina.core.ContainerBase.startInternal A child container failed during start

    之前Tomcat一直运行正常,重启之后一直报以下错误信息: 13-Jun-2019 19:46:13.000 SEVERE [Catalina-startStop-1] org.apache.cata ...

  5. Consumer clientId=consumer-1, groupId=console-consumer-950] Connection to node -1 could not be

    kafka创建主题的ip地址最好用实际ip,不要用localhost https://blog.csdn.net/getyouwant/article/details/79000524

  6. C++函数形参与实参交换

    c++中函数的实参传递到形参的值是单向的,改变形参并不会影响实参. #include <iostream> using namespace std; void swap(int a, in ...

  7. Shell的展开

    Shell的展开 2018-5-30   Writen By Stephen.Yu  一.路径名展开 shell执行echo命令前,在命令行上自动展开任何符合条件的字符,例如这里,* 被展开成当前的路 ...

  8. C语言:求π

    1835: 圆的面积 本题的关键在于如何求π: 今天先给给大家介绍一种针对本题的方法——利用反三角函数求π. 在高数中arcsin(0)=arccos(1)=π,不过编译器中并没有arcsin和arc ...

  9. Vue 公众号开发 (菜鸡前段的血泪史)

    首先vue-cli就不说了 接下来要说我们需要注意什么 公众号的每个页面都有一个title 所以我们在开发过程中 需要插件 安装vue-wechat-title 安装vue-js-sdk

  10. 【简解】C2CRNI - Crni

    [题目大意] 给定一个N行N列的矩阵,每个格子要么为白色要么为黑色.黑矩形为所涵单元格数大于等于2且所涵单元格均为黑色的矩表.要解决的问题是在给定的矩形中找出两个没有共公部分的黑矩形,输出所有方案数, ...