• UVA 10780


    题意:求m^k能被n!整除,求最大的k

     ps:这题最开始一头雾水……知道是质因数分解,但不造怎么弄,看了下大牛的代码和解释 -->大牛代码

      看了后,感觉还行

      我们首先将m质因数分解,得到它的质因数以及指数个数:m1^p1,m2^p2,m3^p3 

      我们再求n中m1,m2,m3的质因数的个数,假如分别得到为q1,q2,q3个

      那么我们最后比较的时候则比较  min(q1/p1,q2/p2,q3/p3) 即可得到最大的k值

      ps:p,q在代码里,重复利用了  废话(~ε(#~)☆╰╮(~▽~///)

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 int t,counts;//计数器
     8 int m,n;
     9 
    10 void datecal();
    11 int factorn(int ,int);
    12 
    13 void datecal()
    14 {
    15     int i=2;
    16     int ans=0x3f3f3f3f;
    17 
    18     while(m!=1)
    19     {
    20         int p=0;
    21         while(m%i==0)
    22         {
    23             m/=i;
    24             p++;
    25         }
    26 
    27         if(p!=0)
    28         {
    29             ans=min(ans,factorn(n,i)/p);
    30         }
    31         i++;
    32     }
    33     printf("Case %d:
    ",counts++);
    34     if(ans!=0)
    35         printf("%d
    ",ans);
    36     else printf("Impossible to divide
    ");
    37 
    38 }
    39 
    40 int factorn(int n,int i)//得到n中质因数i的个数
    41 {
    42     int q=0;
    43     while(n!=0)
    44     {
    45         q+=n/i;
    46         n/=i;
    47     }
    48     return q;
    49 }
    50 
    51 
    52 int main()
    53 {
    54     scanf("%d",&t);
    55     counts=1;
    56     while(t--)
    57     {
    58         scanf("%d%d",&m,&n);
    59         datecal();
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    C++11:22委托构造函数和继承构造函数
    C++11:21通过智能指针管理第三方库分配的内存
    python 常识
    计算机基础
    XML
    flask请求上下文 及相关源码
    Flask框架
    Django orm 常用字段和参数
    docker 使用
    视图家族
  • 原文地址:https://www.cnblogs.com/byzsxloli/p/5489249.html
Copyright © 2020-2023  润新知