UVA10780幂和阶乘
题意:
输入两个整数n,m(1<m<5000,0<n<10000)求最小的k使得m^k是n!的因子。
思路:
比较容易想,一开始手残wa了好几次,我们直接求出m和n!的素数因子和个数就行了,假如s1[a]表示的是n!的素数因子a的个数,s2是m的,则Ans=min(Ans ,s1[a]/s2[a]);这个应该不用解释,很好理解吧!
#include<stdio.h>
#include<string.h>
int Pri[11000] ,pt;
int mark[11000];
int s1[11000] ,s2[11000];
void DBPri()
{
memset(mark ,0 ,sizeof(mark));
mark[1] = 1;
pt = 0;
for(int i = 2 ;i <= 10000 ;i ++)
{
if(!mark[i])
{
Pri[++pt] = i;
for(int j = i + i ;j <= 10000 ;j += i)
mark[j] = 1;
}
}
}
int main ()
{
DBPri();
int t ,cas = 1 ,i ,j ,n ,m;
scanf("%d" ,&t);
while(t--)
{
scanf("%d %d" ,&m ,&n);
memset(s1 ,0 ,sizeof(s1));
for(i = 1 ;i <= n ;i ++)
{
int now = i;
for(j = 1 ;Pri[j] <= now && j <= pt ;j ++)
{
while(now % Pri[j] == 0)
{
now /= Pri[j];
s1[Pri[j]] ++;
}
}
}
memset(s2 ,0 ,sizeof(s2));
int mm = m;
for(i = 1 ;Pri[i] <= mm && i <= pt ;i ++)
if(mm % Pri[i] == 0)
{
while(mm % Pri[i] == 0)
{
s2[Pri[i]] ++;
mm /= Pri[i];
}
}
int Ans = 100000;
for(i = 1 ;Pri[i] <= m && i <= pt ;i ++)
if(m % Pri[i] == 0)
{
if(Ans > s1[Pri[i]] / s2[Pri[i]])
Ans = s1[Pri[i]] / s2[Pri[i]];
}
printf("Case %d:\n" ,cas ++);
if(Ans == 0) printf("Impossible to divide\n");
else printf("%d\n" ,Ans);
}
return 0;
}
UVA10780幂和阶乘相关推荐
- Java实现能完成 加减乘除幂与阶乘 组合运算的计算器
题目叙述: 有一组小学生要开始学习算术运算,需要使用计算机辅助他们检查计算结果,请帮助小同学设计一个能够完成+.-.*.\.幂运算和阶乘的计算器程序 具体要求: 由于是面向小同学的软件工具,请设计一个 ...
- sequence——强行推式子+组合意义
sequence 考虑长度<=x的方案数F(x),然后(F(x)-F(x-1))*x贡献到答案里 n平方的做法可以直接DP, 感觉有式子可言, 就推出式子:类似coat,每个长度为i的计算i次. ...
- 群论及Polya计数定理题目入门
本文以一些简单的题目为例,来研究一下群论及Polya计数在OI中的应用 注:本文无代码,仅介绍题目的思路和技巧,且难度较低,因为这些题目并不难写,在知道思路以后相信大家都能写出来,其实是因为我的代码写 ...
- 这是一份简易的ACM模板
1.基础算法 __int128 typedef __int128 LL; inline __int128 read(){__int128 x=0,f=1;char ch=getchar();while ...
- 第45届ICPC 昆明站 临时模板补充
昆明站模板补充 __int128 typedef __int128 LL; inline __int128 read(){__int128 x=0,f=1;char ch=getchar();whil ...
- 高等数学——常用结论(3)
13 多元函数微分学 拉格朗日函数求最值时,可以根据目标函数的具体形式来选择与其相同的目标点,但是形式更为简易的函数,以方便后续求解: un\sqrt[n]{u}nu考虑用uuu u1⋅u2⋅u3u ...
- “蓝桥杯”练习系统(基础篇)
"蓝桥杯"练习系统(基础篇) 一.基础训练 数列排序 解法:排序算法-冒泡排序 关键字:数组 排序 函数封装: #include<bits/stdc++.h> usin ...
- ACM常用英文术语翻译
abbreviation省略;缩写 adjacent sequence elements相邻的元素串 algebraic term代数项 alphabetical order字典序 alternate ...
- Lucas定理扩展Lucas
Lucas定理 求解 C n m m o d p C_n^m\mod p Cnmmodp (p为素数) 蒟蒻不会证明,记着递推公式就好=_= L u c a s ( n , m ) = C ( ...
最新文章
- 周长最短面积最大_圆内接三角形中,正三角形周长最大值的证明
- JSON.stringify 语法实例讲解
- 国内外ip地址黑名单查询
- HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
- 产品运营 跨境支付_餐饮网店的运营 跨境支付哪个平台最好
- prop()和attr()
- vue.js 事件的案例以及 v-model 的学习
- OpenAI对强化学习环境的汇总
- 【LeetCode】【数组】题号:*283,移动零
- 使用coin3d画个小模型
- tomcat打印日志乱码_针对tomcat日志乱码问题
- 硬件设计论坛_从全球EDA产业发展看EDA365电子论坛作用
- cmos逻辑门传输延迟时间_电路基础:详解TTL和CMOS电平
- 来!程序猿教你们玩微信代码~
- Synchronized 可重入性粒度测试
- 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
- 总有一项适合你:联想 Miix2 8寸版触摸屏失灵的各项解决方案
- 陈赫孙艺洲携手《你的带货王2020》PK带货 玛莎拉蒂究竟花落谁家?
- vue父组件往子组件传值时报错Property or method 选择操作人 is not defined on the instance but referenced during rende
- 5.4 数据检验(数据一致性处理)