题目来源:URAL 1268. Little Chu

题意:输入n 求一个最大的k 使得k^1 k^2 k^3...k^x mod n 后各不相同

思路:mod n 后各不相同 最多有 n个 那么此事k就是原根 因为k <= n 所以从n开始向下枚举 求一个最大的原根

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long LL;
int p[100000], c;LL pow_mod(LL a, LL x, LL m)
{LL ans = 1;while(x){if(x&1)ans = ans * a % m;a = a * a % m;x >>= 1;}return ans;
}bool ok(int x, int ph, int m)
{for(int i = 0; i < c; i++)if(pow_mod(x, ph/p[i], m) == 1)return false;return true;
}
void divide(int x)
{c = 0;for(int i = 2; i*i <= x; i++){if(x % i == 0){p[c++] = i;while(x % i == 0)x /= i;}}if(x > 1)p[c++] = x;
}
int main()
{int T;scanf("%d", &T);while(T--){int n;scanf("%d", &n);int m = n, ans = m;for(int i = 2; i*i <= n; i++){if(n%i == 0){ans = ans / i * (i-1);while(n%i == 0)n /= i;}}if(n > 1)ans = ans / n * (n-1);//printf("%d\n", ans);divide(ans);int x = ans;while(!ok(x, ans, m))x--;printf("%d\n", x);}return 0;
}

URAL 1268. Little Chu 求最大原根相关推荐

  1. Ural 1268 Little Chu (原根)

    对于两个正整数,由欧拉定理可知,存在正整数, 比如说欧拉函数,即小于等于 m 的正整数中与 m 互质的正整数的个数,使得. 由此,在时,定义对模的指数为使成立的最小的正整数.由前知 一定小于等于 ,若 ...

  2. python求本原根

    素数p的本原根定义 如果a是素数p的原根,则数, , - , 是不同的并且包含1到p-1的整数的某种排列. 特别地,如果a是素数p的本原根,则a, a^2, -, a^(p-1)在 mod p下都不相 ...

  3. 求大素数原根算法(python代码)

    定义: 代码可直接看下面求素数p原根的最终方法 对于素数 p,如果存在一个正整数 1<a<p, 使得 a1,a2,-,ap−1a1,a2,-,ap−1 模 p 的值 取遍 1,2,-,p− ...

  4. 【HNOI2019】白兔之舞【组合数学】【矩阵快速幂】【单位根反演】【Chirp Z-Transform】【原根】【MTT】

    题意:有一张 (L+1)×n(L+1)\times n(L+1)×n 个点的有向图,每个结点有二元组 (x,y)(0≤x≤L,1≤y≤n)(x,y)~(0\leq x\leq L,1\leq y\le ...

  5. 原根(扩展欧几里得+欧拉函数)

    1135 原根 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) ...

  6. 原根(知识学习+板子总结+例题+应用)

    思路来源 https://baike.baidu.com/item/%E5%8E%9F%E6%A0%B9/8103534?fr=aladdin https://blog.csdn.net/zoro_n ...

  7. 原根的存在性 几道例题

    索引 传送门 例题1 求 49 49 49的全部原根. 例题2 已知 487 487 487是素数, 有原根 10 10 10. 找一个 487 2 {{487}^{2}} 4872的原根. 例题3  ...

  8. c++实现求解欧拉函数和本原根

    计算本原根 这里我不详细解释欧拉函数和本原根. 首先我们先了解求一个数的本原根的过程,以25为例: 25的本原根 1.在计算25的所有本原根时,首先我们要得到25的欧拉函数值可以知道25=5^2,其欧 ...

  9. BZOJ 3992 [SDOI2015]序列统计

    数列长度到了109,转移矩阵边长n到了8000,除了FFT还能怎么写??!! 当然,这题由于取模,必须用NTT. 同时由于取得是乘积,所以用m的原根来搞,每次NTT完了,把后面的部分加到前面去. 注意 ...

最新文章

  1. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作
  2. VS Code 集成 flutter dart 开发
  3. zookeeper开机自启动
  4. Linux 网络服务之FTP 文件传输
  5. Js 与 as 相互通信
  6. 机器学习和算法学习网址
  7. Android移动应用基础教程【使用内容提供者共享数据】
  8. bzoj 2151 种树 —— 思路+链表
  9. linux内核奇遇记之md源代码解读之七阵列同步一
  10. 制造行业相关名词释义
  11. python分层抽样_抽样方法—分层抽样
  12. 转载 | 自动驾驶中的9种传感器融合算法
  13. 2018第七届中国金融科技峰会
  14. 数据结构——数组以及n维数组
  15. Tesseract 教程
  16. AirPods Pro 和 AirPods 3 固件更新,或将提升稳定性,如何操作看这里
  17. LTE中PA/PB的理解
  18. (glidejs)glidejs的使用
  19. 解决height:100vh超出屏幕高度的问题
  20. 玩转黑群晖(持续更新)

热门文章

  1. 从YouTube删除不合适的评论
  2. ESP8266烧录micropython固件-thonny软件刷固件
  3. input的file类型的accept属性的值
  4. 2023济南科创金融论坛 郭为主旨演讲:数字化的力量
  5. Android N音频播放延迟
  6. Android问题解决
  7. 阿里云ACP云计算认证
  8. Windows下usb接口驱动技术(二)
  9. 云原生存储工具的选型和应用探讨
  10. 字节跳动终面:35K,18薪,什么时候能入职?