博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-1395 2^x mod n = 1---求阶(欧拉函数)
阅读量:6878 次
发布时间:2019-06-26

本文共 1082 字,大约阅读时间需要 3 分钟。

题目链接:

题目大意:

题目中给出输入一个整数n,要求一个最小整数的x,使得2^x mod n=1;

解题思路:

2^x = 1(mod n)就是求2模上n的阶。

如果n是偶数或者是1,答案一定不存在

如果是偶数,2^x也是偶数,偶数模上偶数不可能为1。

如果n为1,那么模的结果一定为0。

如果n是奇数,那么可以求阶,也可以暴力(数据水)

求阶的方法:

 

1 #include
2 using namespace std; 3 typedef long long ll; 4 int a[10005]; 5 int euler_phi(int n)//求单个 6 { 7 int m = (int)sqrt(n + 0.5); 8 int ans = n; 9 for(int i = 2; i <= m; i++)if(n % i == 0)10 {11 ans = ans / i * (i - 1);12 while(n % i == 0)n /= i;13 }14 if(n > 1)ans = ans / n * (n - 1);15 return ans;16 }17 ll pow(ll a, ll b, ll m)18 {19 a %= m;20 ll ans = 1;21 while(b)22 {23 if(b & 1)ans = ans * a % m;24 a = a * a % m;25 b /= 2;26 }27 return ans % m;28 }29 int main()30 {31 int n;32 while(cin >> n)33 {34 int tot = 0;35 if(n % 2 == 0 || n == 1)36 {37 printf("2^? mod %d = 1\n", n);38 continue;39 }40 int t = euler_phi(n);41 //cout<
<

 

转载于:https://www.cnblogs.com/fzl194/p/9038256.html

你可能感兴趣的文章
《微信公众平台开发最佳实践》——2.2 微信开发者中心
查看>>
《IPv6精髓(第2版)》——1.4 常见误解
查看>>
《精通ArcGIS Server 应用与开发》——2.2 ArcGIS Server架构
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——2.10 TCP端口号与并发服务器...
查看>>
Centrifugo —— 用 Golang 实现的实时消息通信平台
查看>>
《善用佳软:高效能人士的软件应用之道》一2.6 小工具之计算器
查看>>
《Web前端工程师修炼之道(原书第4版)》——关于浏览器
查看>>
关于CKEditor4.5.6的使用,自定义toolbar配置,上传图片案例(SpringMVC+MyBatis案例),自定义行高,去编辑器的中内容,将编辑器中内容设置到指定的位置等...
查看>>
Ejoy2D —— 来自云风的开源游戏图形引擎
查看>>
Linux主机肉鸡木马minerd导致CPU跑满
查看>>
Organelle —— 支持编程的智能音频设备,能玩!
查看>>
phpMyAdmin 4.0.0-rc4 发布
查看>>
《教孩子学编程(Python语言版)》——第2章 海龟作图—用Python 绘图 2.1 第一个海龟程序...
查看>>
vue服务器端渲染(SSR)实战
查看>>
「原码 反码 补码 移码」一探究竟(中)
查看>>
CSS 你到底有多少长度单位?
查看>>
Linux Shell脚本系列之二
查看>>
设计模式--代理模式(Proxy Pattern)
查看>>
稀疏数组
查看>>
HTML5 标签 canvas
查看>>