URAL 1268. Little Chu 求最大原根
来源:互联网 发布:穆青小王爷 知乎 编辑:程序博客网 时间:2024/06/16 07:40
题目来源: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;}
0 0
- URAL 1268. Little Chu 求最大原根
- URAL 1226 Little Chu(最大原根)
- Ural 1268 Little Chu (原根)
- Ural 1268. Little Chu 求原根
- Ural 1297. Palindrome 求最大回文串
- URAL 1297. Palindrome(后缀数组求最大回文串)
- URAL 1146. Maximum Sum(求最大子矩阵和)
- 【原题】求两个不相交的连续子数组的最大和
- URAL - 1736 (最大流)
- 【一般图最大匹配】URAL
- 1483 求原排列
- ural 1203. Scientific Conference(dp)给定N个区间,求最大的不相交的区间数
- URAL 题目1553. Caves and Tunnels(Link Cut Tree 修改点权,求两点之间最大)
- 51nod 1135 原根(求素数最小原根)
- 快速求奇素数的所有原根
- poj 1284 求一个数的原根个数
- HDU 4992 求一个数的所有原根
- Arithmetic problem | 从数组选K个数位于原数组相对位置,求K个数的最大数
- 黑马程序员----------各集合系列的特点(个人学习总结)
- 构建基于Jenkins + Github的持续集成环境
- c# 类型初始值设定项引发异常
- android项目 之 记事本(9) ----- 画板功能之橡皮擦、画笔大小和画笔颜色
- 深度解析Struts2拦截器Interceptor的设计原理
- URAL 1268. Little Chu 求最大原根
- linux系统挂载光盘镜像ISO的方法
- c++学习笔记 一
- 在VS2010中无法增加了CColumn和Ccolumns类 如何添加C_Recordset的类
- TC++PL第十二章 派生类
- Eclipse 配置
- 在UIView边缘加徽章: UIView+MGBadgeView
- android开源项目大集合
- 关于TCBlobDownload中续传的问题