hdu1395

数论   欧拉函数
对于给出的每一个n
求最小正整数 x 满足 2^x mod n = 1
1、如果给出的n 是偶数或者 1 则一定无解
2、如果是奇数 首先根据欧拉定理 我们可知 phi(n)一定是满足要求的
然后答案一定是 phi( i ) 的因数
然后我们就可以 O(sqrt(phi(i))的时间内 枚举每个因数 然后快速幂验证就行了

 1 #include <bits/stdc++.h>
 2 using namespace std ;
 3
 4 const double eps = 1e-8 ;
 5 const int inf = 1e9 ;
 6 int n,x,t,ans ;
 7
 8 inline int Phi(int n)
 9 {
10     int ans = n ;
11     for(int i=2,zz = int(sqrt(n)+eps);i<=zz;i++)
12     {
13         if( n % i==0 )
14             ans = ans - ans / i ;
15         while(n%i==0) n/=i ;
16     }
17     if( n!=1 )
18         ans = ans - ans/n ;
19     return ans ;
20 }
21
22 inline int ksm(int base,int ind,int mod)
23 {
24     int now = 0,b[32] ;
25     while(ind)
26     {
27         b[++now] = ind&1 ;
28         ind = ind>>1 ;
29     }
30     int ans = 1 ;
31     for(int i=now;i>=1;i--)
32     {
33         ans = ans * ans % mod ;
34         if(b[ i ]) ans = ans*base % mod ;
35     }
36     return ans ;
37 }
38 inline bool check(int x) { return ksm(2,x,n)==1 ; }
39
40 int main()
41 {
42      while(~scanf("%d",&n))
43     {
44         if(n%2==0||n==1)
45         {
46             printf("2^? mod %d = 1\n",n) ;
47             continue ;
48         }
49         t = Phi( n ) ;
50         ans = inf ;
51         for(int i=2,zz = int(sqrt(t)+eps);i<=zz;i++)
52         {
53             if(t%i!=0) continue ;
54             if(check( i ))
55             {
56                 ans = i ;
57                 break ;
58             }
59             if(check( t/i ))
60                  if( t/i<ans ) ans = t/i ;
61         }
62         if(ans==inf) ans = t ;
63         printf("2^%d mod %d = 1\n",ans,n) ;
64     }
65
66     return 0 ;
67 }

转载于:https://www.cnblogs.com/third2333/p/7182722.html

hdu1395 数论 欧拉函数相关推荐

  1. 第二十六章 数论——欧拉函数(详解与证明)

    第二十六章 数论--欧拉函数(详解与证明) 欧拉函数 1.互质 2.欧拉函数的定义 3.欧拉函数的公式 4.欧拉函数的证明 5.欧拉函数的使用 (1)问题一: 思路 代码 (2)问题二: 思路 cas ...

  2. CCPC-Wannafly Winter Camp Day3 (Div2, onsite) F 小清新数论 欧拉函数的利用 莫比乌斯反演 杜教筛

    F - 小清新数论 做法一:欧拉函数 #include<stdio.h> #include<bits/stdc++.h> using namespace std; #defin ...

  3. 费马定理中值定理_数论-欧拉函数、欧拉定理

    欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...

  4. 中高级数论 [欧拉函数线性筛,二次剩余]

    欧拉函数线性筛 对于素数ppp, φ(p∗i)={p−1i=1p∗φ(i)p∣i(p−1)∗φ(i)p∤i\varphi (p*i)= \begin{cases} p-1& i=1\\ p*\ ...

  5. nssl1232-函数【数论,欧拉函数,莫比乌斯反演】

    正题 题目大意 ∑d∣nf(d)=n\sum_{d|n}f(d)=nd∣n∑​f(d)=n 对于n个aia_iai​ 求 ∑i=1nf(ai)\sum_{i=1}^nf(a_i)i=1∑n​f(ai​ ...

  6. 数论 —— 欧拉函数

    [定义] 对正整数 n,欧拉函数是小于等于 n 的数中与 n 互质的数的个数,记作: 例如:,因为 1.3.5.7 均与 8 互质. [性质] 1)若 n 为一素数 p,则: 2)若 n 为一素数 p ...

  7. [数论-欧拉函数的应用]NEFU 1115

    description 在高数课上老师给出了一个等式GCD(n-a,n)*GCD(n-b,n)=n^k; 已知,n,k,问同学们有多少组(a,b)满足这个等式.结果对10^9+7取模. 1<=a ...

  8. [HAOI2012]外星人——数论欧拉函数

    题目描述 艾利欧在她的被子上发现了一个数字 NNN,他觉得只要找出最小的 xxx 使得 φx(N)=1\varphi^x(N)=1φx(N)=1 根据这个 xxx 她就能找到曾经绑架她的外星人的线索了 ...

  9. P2303 [SDOI2012] Longge(数论/欧拉函数)

    P2303 [SDOI2012] Longge 一道看似非常基础的数论题,但是蕴含了非常多的知识,求解 ∑i=1ngcd(i,n)\sum_{i=1}^ngcd(i,n) i=1∑n​gcd(i,n) ...

最新文章

  1. PYTHON编程导论群问题汇总(一)
  2. 【互联网面试】朋友圈问题
  3. 阅读《Android 从入门到精通》(29)——四大布局
  4. CIA困局:天下再无007,AI识别下无处遁行的“特工”们
  5. mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
  6. (18)修改 PTE 实现挂物理页读写空指针
  7. php判断参数_php检查函数必传参数是否存在的实例详解
  8. linux sudo永久免密码,linux 免密码 使用sudo 直接使用root权限执行命令
  9. Idea集成springboot报错(cound not autowire)
  10. 面试题 (斐波那契数列,复杂度为线性)
  11. mysql grant all privileges_MySQL数据备份及还原(一)
  12. 实例 20 重定向输出流实现程序日志
  13. 《Python核心编程》18.多线程编程(二)
  14. DateUtils 工具类
  15. 互联网大厂的薪资和职级一览
  16. Verilog AXI Components
  17. 【maven】Maven异常:Could not find artifact
  18. c++11:std::default_delete
  19. java进销存管理系统_java swing开发进销存管理系统
  20. Amazing Css:自定义下划线样式的Input

热门文章

  1. Altium Designer 正反面布元器件
  2. python多重继承
  3. Ubuntu 13.10下安装ns2 2.35遇到的小问题
  4. ashx+jQuery,一个轻量级的asp.net ajax解决方案
  5. 步步为营UML建模系列二、部署图(Deployment Diagram)
  6. 4月25日日志(4.25)
  7. 根据XML配置规则导入Excel数据(⑥)ExcelAble 标记接口
  8. 使用DBCC SHRINKFILE EMPTYFILE 选项迁移数据
  9. 《扩展 jQuery》——6.3 总结
  10. Access denied (java.lang.RuntimePermission getClas