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

本题围绕:积与余数

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. FastJson 对json中的KEY值的大小写转换方法

    /** * json大写转小写 * * @return JSONObject */ public static JSONObject transToLowerObject(String json) { ...

  2. C#.NET 合并图片

    引用:https://www.cnblogs.com/stulzq/p/6137715.html util: using System; using System.Collections.Generi ...

  3. Java中常量以及常量池

    1.举例说明 变量 常量 字面量 int a=10; float b=1.234f; String c="abc"; final long d=10L; a,b,c为变量,d为常量 ...

  4. 【C/C++开发】C++11:左值引用VS右值引用

    左值引用VS右值引用 左值引用对于一般的C++程序员再熟悉不过,但对于右值引用(C++0X新特性),就稍微有点不知所云 左值VS右值 在定义变量的时候,经常会用到左值和右值,比如:int a = 1; ...

  5. 晶体管放大电路与Multisim仿真学习笔记

    前言 开始写点博客记录学习的点滴,第一篇就写基本的共射极放大电路吧. 很多教材都是偏重理论,而铃木雅臣著作的<晶体管电路设计>是一本很实用的书籍,个人十分推荐! 下面开始我的模电重温之旅吧 ...

  6. GraphQL&DSL&API网关

    车联网服务non-RESTful架构改造实践   导读 在构建面向企业项目.多端的内容聚合类在线服务API设计的过程中,由于其定制特点,采用常规的restful开发模式,通常会导致大量雷同API重复开 ...

  7. jquery实现比较靠谱的手风琴代码

    比较靠谱的手风琴代码<pre><!DOCTYPE html><html><head> <meta charset="utf-8" ...

  8. 虚拟机centos与主机互相Ping通

    在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS7 1.  首先,要确保CentOS7安装了  openssh-server,在 ...

  9. 006 SpringCloud 学习笔记2-----SpringCloud基础入门

    1.SpringCloud概述 微服务是一种架构方式,最终肯定需要技术架构去实施. 微服务的实现方式很多,但是最火的莫过于Spring Cloud了.SpringCloud优点: - 后台硬:作为Sp ...

  10. MariaDB 10.3 序列

    在MariaDB .3版本中sequence是特殊的表,和表使用相同的namespace,因此表和序列的名字不能相同. MariaDB [wuhan]> select version(); +- ...