题意:
      输入两个整数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幂和阶乘相关推荐

  1. Java实现能完成 加减乘除幂与阶乘 组合运算的计算器

    题目叙述: 有一组小学生要开始学习算术运算,需要使用计算机辅助他们检查计算结果,请帮助小同学设计一个能够完成+.-.*.\.幂运算和阶乘的计算器程序 具体要求: 由于是面向小同学的软件工具,请设计一个 ...

  2. sequence——强行推式子+组合意义

    sequence 考虑长度<=x的方案数F(x),然后(F(x)-F(x-1))*x贡献到答案里 n平方的做法可以直接DP, 感觉有式子可言, 就推出式子:类似coat,每个长度为i的计算i次. ...

  3. 群论及Polya计数定理题目入门

    本文以一些简单的题目为例,来研究一下群论及Polya计数在OI中的应用 注:本文无代码,仅介绍题目的思路和技巧,且难度较低,因为这些题目并不难写,在知道思路以后相信大家都能写出来,其实是因为我的代码写 ...

  4. 这是一份简易的ACM模板

    1.基础算法 __int128 typedef __int128 LL; inline __int128 read(){__int128 x=0,f=1;char ch=getchar();while ...

  5. 第45届ICPC 昆明站 临时模板补充

    昆明站模板补充 __int128 typedef __int128 LL; inline __int128 read(){__int128 x=0,f=1;char ch=getchar();whil ...

  6. 高等数学——常用结论(3)

    13 多元函数微分学 拉格朗日函数求最值时,可以根据目标函数的具体形式来选择与其相同的目标点,但是形式更为简易的函数,以方便后续求解: un\sqrt[n]{u}nu​考虑用uuu u1⋅u2⋅u3u ...

  7. “蓝桥杯”练习系统(基础篇)

    "蓝桥杯"练习系统(基础篇) 一.基础训练 数列排序 解法:排序算法-冒泡排序 关键字:数组 排序 函数封装: #include<bits/stdc++.h> usin ...

  8. ACM常用英文术语翻译

    abbreviation省略;缩写 adjacent sequence elements相邻的元素串 algebraic term代数项 alphabetical order字典序 alternate ...

  9. Lucas定理扩展Lucas

    Lucas定理 求解 C n m m o d    p C_n^m\mod p Cnm​modp (p为素数) 蒟蒻不会证明,记着递推公式就好=_= L u c a s ( n , m ) = C ( ...

最新文章

  1. 周长最短面积最大_圆内接三角形中,正三角形周长最大值的证明
  2. JSON.stringify 语法实例讲解
  3. 国内外ip地址黑名单查询
  4. HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
  5. 产品运营 跨境支付_餐饮网店的运营 跨境支付哪个平台最好
  6. prop()和attr()
  7. vue.js 事件的案例以及 v-model 的学习
  8. OpenAI对强化学习环境的汇总
  9. 【LeetCode】【数组】题号:*283,移动零
  10. 使用coin3d画个小模型
  11. tomcat打印日志乱码_针对tomcat日志乱码问题
  12. 硬件设计论坛_从全球EDA产业发展看EDA365电子论坛作用
  13. cmos逻辑门传输延迟时间_电路基础:详解TTL和CMOS电平
  14. 来!程序猿教你们玩微信代码~
  15. Synchronized 可重入性粒度测试
  16. 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
  17. 总有一项适合你:联想 Miix2 8寸版触摸屏失灵的各项解决方案
  18. 陈赫孙艺洲携手《你的带货王2020》PK带货 玛莎拉蒂究竟花落谁家?
  19. vue父组件往子组件传值时报错Property or method 选择操作人 is not defined on the instance but referenced during rende
  20. 5.4 数据检验(数据一致性处理)

热门文章

  1. C#中一道关于多线程的基础练习题——模拟仓库存销过程
  2. lucene,基于QueryParser的搜索
  3. 在Flex3中使用Runtime Shared Library (RSL)
  4. 小功告成:ReadIE beta
  5. Lesson 016 —— python 元组
  6. Kubernetes master节点的高可用配置
  7. details和summary标签
  8. 自定义控件之onMeasure
  9. 数学图形之罗马曲面(RomanSurface)
  10. 信息网络基础设施普遍薄弱,提防信息安全风险--央行副行长