zoukankan      html  css  js  c++  java
  • UVA 10780 Again Prime? No Time.

    本题求m的最大多少次幂是 n!的因子;

    也就是质因子分解 n!中某一质因子个数与m中质因子个数比的最小值。

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 int sign[10010];
     6 int pri[10010];
     7 int tot;
     8 int e2[10010][1500],e1[10010][1500];
     9 
    10 void getpri (){
    11 memset (sign,0,sizeof sign);
    12 sign[0]=sign[1]=1;
    13 for (int i=2;i*i<10000;i++){
    14 if (!sign[i]){
    15 for (int j=i*i;j<10000;j+=i){//cout<<"error";
    16 sign[j]=1;
    17 }
    18 }
    19 }
    20 tot=0;
    21 for (int i=2;i<10000;i++)
    22 if (!sign[i])
    23 pri[tot++]=i;//cout<<i<<" ";
    24 }
    25 
    26 int main (){
    27 int t;
    28 int n,m,temp,ans;
    29 getpri ();//cout<<tot;
    30 memset (e2,0,sizeof e2);
    31 memset (e1,0,sizeof e1);
    32 for (int i=2;i<=10000;i++){
    33 temp=i;
    34 for (int j=0;j<tot;j++){
    35 while (temp%pri[j]==0){
    36 e2[i][j]++;
    37 temp/=pri[j];
    38 }
    39 e1[i][j]=e1[i-1][j]+e2[i][j];
    40 }
    41 }
    42 cin>>t;
    43 for (int casenum=1;casenum<=t;casenum++){
    44 cin>>m>>n;
    45 ans=1000000;
    46 for (int j=0;j<tot;j++){
    47 if (e2[m][j])
    48 ans=min (ans,e1[n][j]/e2[m][j]);
    49 }//cout<<e1[0]<<" "<<e2[0]<<" "<<n%pri[0];
    50 cout<<"Case "<<casenum<<":"<<endl;
    51 if (ans==1000000||ans==0)
    52 cout<<"Impossible to divide"<<endl;
    53 else
    54 cout<<ans<<endl;
    55 }
    56 return 0;
    57 }
  • 相关阅读:
    java 算法最长连续递增子序列
    java 算法最长连续递增序列
    最大连续子数组和(Java)
    mysql时间序列与窗口函数
    CSS控制br高度
    小知识随手记(九):兄弟选择器(~和+)区别
    VUE组件递归实现自定义目录及拖拽效果
    VUE的插件解析
    VUE的mixin混入解析
    VUE高阶组件解析
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3848874.html
Copyright © 2011-2022 走看看