Tennis Game

CodeForces - 496D

通过排列组合解决问题。

首先两组不同素数的乘积,是互不相同的。这应该算是唯一分解定理的逆运用了。

然后是,输入中的素数,任意组合,就是n的因数,而且不会重复。

然后只需要知道,每个质数在所有组合中出现了几次就行了。

如果某一个质数再输入中只出现了一次,那么它在组合中出现的次数就应该是其他所有质数在输入中出现次数加一的乘积。

如果某一个质数x在输入中出现了多次,那么便只需把x,x*x, x*x*x等数暂且当做一个输入中的数来计算就是了,然后相加;容易知道这样的话,相当于x出现次数为1,2,3,4...... 于是用等差数列求和的结果乘上上一条说的结果就行了。

之后便可以将质数的(组合中出现的次数)次方    全部乘起来就行了。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<vector>
 4 #include<stack>
 5 #include<queue>
 6 #include<map>
 7 #include<set>
 8 #include<cstdio>
 9 #include<cstring>
10 #include<cmath>
11 #include<ctime>
12 #define fuck(x) cout<<#x<<" = "<<x<<endl;
13 #define ls (t<<1)
14 #define rs ((t<<1)+1)
15 using namespace std;
16 typedef long long ll;
17 typedef unsigned long long ull;
18 const int maxn = 1000086;
19 const int inf = 2.1e9;
20 const ll Inf = 999999999999999999;
21 const int mod = 1000000007;
22 const double eps = 1e-6;
23 const double pi = acos(-1);
24 ll num[maxn],res[maxn];
25 ll l[maxn],r[maxn];
26
27 ll q_pow(ll a,ll b)
28 {
29     ll ans=1;
30     while(b){
31         if(b&1){ans*=a;ans%=mod;}
32         a*=a;a%=mod;
33         b>>=1;
34     }
35     return ans;
36 }
37
38 int main()
39 {
40     int m;
41     scanf("%d",&m);
42     int maxx = 0;
43     for(int i=1;i<=m;i++){
44         int x;
45         scanf("%d",&x);
46         maxx=max(maxx,x);
47         num[x]++;
48     }
49     int t=0;
50     for(int i=1;i<=maxx;i++){
51         if(num[i]){
52             t++;
53             res[t]=num[i];
54             num[t]=i;
55         }
56     }
57     l[0]=1;
58     for(int i=1;i<=t;i++){
59         l[i]=(1+res[i])*l[i-1];
60         l[i]%=(mod-1);
61     }
62     r[t+1]=1;
63     for(int i=t;i>=1;i--){
64         r[i]=(res[i]+1)*r[i+1];
65         r[i]%=(mod-1);
66     }
67
68     ll ans=1;
69     for(int i=1;i<=t;i++){
70         ll d = (l[i-1])*(r[i+1]);
71         d%=(mod-1);
72
73         ll p = res[i]*(res[i]+1)/2;
74         p%=(mod-1);
75
76         d = d*p;
77         d%=(mod-1);
78         ans*=q_pow(num[i],d);
79         ans%=mod;
80     }
81     printf("%lld",ans);
82
83     return 0;
84 }

View Code

转载于:https://www.cnblogs.com/ZGQblogs/p/10346158.html

Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)相关推荐

  1. CodeForces - 222C Reducing Fractions(唯一分解定理)

    题目链接:点击查看 题目大意:给出两个数组,数组a表示的是分子的因数,数组b表示的是分母的因数,求约分后的答案 题目分析:一看题目挺简单的,但是在输出的那里这个题目做了特定的要求,题目首先给出的是1e ...

  2. 唯一分解定理一篇就够了

    如果与唯一定理一起应用需要用到素数筛,可以看这篇文章: 线性筛判断素数 唯一分解定理: 任何一个大于1的自然数 N,如果N不为质数,**那么N可以唯一分解成有限个质数的乘积: 这里P1<P2&l ...

  3. 欧几里得算法与唯一分解定理

    整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...

  4. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  5. 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341

    算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...

  6. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)

    给一棵树,树上每个节点有一个权值,有两个操作,RAND操作查询u的子树乘积是多少以及有多少因数,SEED操作把节点u乘上v n,q <= 1e5.数值小于等于1e9,最大的质因数不超过13 组队 ...

  7. LightOJ - 1236 (唯一分解定理)

    题意:求有多少对数对(i,j)满足lcm(i,j) = n,1<=i<=j, 1<=n<=1e14. 分析:根据整数的唯一分解定理,n可以分解为(p1^e1)*(p2^e2)* ...

  8. 牛客 - 阶乘(唯一分解定理)

    题目链接:点击查看 题目大意:给出一个 p ,求出最小的 n! 使得 p 可以整除 n! 题目分析:因为 p 高达 1e9 ,可以考虑sqrt(n)的算法,也就是唯一分解定理了,分解之后对于每个质因子 ...

  9. POJ - 2480 Longge's problem(欧拉函数+唯一分解定理)

    题目链接:点击查看 题目大意:给出一个n,求 题目分析:因为N到了二的三十二次方,所以直接暴力肯定会T,这里介绍两种方法,都可以做实现这个题目 首先我们需要转化一下这个题目,先说一下优化过后的暴力枚举 ...

最新文章

  1. MySql8.0.19最新版本创建用户分配权限演示,You have an error in your SQL syntax权限分配问题解决方法
  2. 2021-10-15 红黑树 概念和平衡操作理解以及与AVL对比分析 恋上数据结构笔记
  3. Java按规则生成唯一编号
  4. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
  5. 单晶组件的平价上网路线
  6. 数据结构和算法———P1 绪论
  7. 仿淘宝、腾讯课堂评分组件 --- Android高级自定义组件
  8. 【统计信号处理检测理论:CFAR检测】
  9. 生物医药和医疗卫生行业的关系 生物医药行业定义分析
  10. RDS - 远程桌面服务
  11. 我对管理和领导的理解
  12. 《软件工程》实验一:可行性分析
  13. 论文笔记--Self-Supervised Learning of 3D Human Pose using Multi-view Geometry(利用多视角几何学对三维人类姿势进行自我监督学习)
  14. android+删除相片代码,android删除手机照片
  15. php ean13,php生成EAN_13标准条形码实例_PHP教程
  16. Java 和 MySQL 数据类型对照表
  17. 2021年中国压力-容积回路系统市场趋势报告、技术动态创新及2027年市场预测
  18. 同态加密在联邦计算中的应用
  19. python实现“艾宾浩斯”记忆曲线表
  20. 第五周作业【Linux微职位】

热门文章

  1. 9600kf功耗和温度评测_i5-9400F与i5-9600KF性能差距大吗?i5 9600KF和9400F区别对比
  2. OpenCV属性页配置问题~
  3. pythonnumpy函数四舍五入_NumPy函数
  4. sc925 文档服务器,dell服务器磁盘阵列配置手册.docx
  5. 郑州大学计算机学科导论,郑州大学计算机导论大一试题答案.doc
  6. 华为荣耀20和x10比较_华为和荣耀旗舰该如何选?其实懂手机的朋友只选择前者...
  7. JQuery的 serializeObject 序列化form表单
  8. Dubbo入门之hello world(zookeeper做注册中心)
  9. 设计模式六大原则(转)
  10. JDK7下VisualVm插件无法链接到插件中心