zoukankan      html  css  js  c++  java
  • UVA 10375 Choose and divide

    n! 分解素因子  快速幂

    ei=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n]  其中[]为取整

    ei 为数 N!中pi 因子的个数;

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 using namespace std;
     7 
     8 const int maxn=10005;
     9 
    10 int sign[maxn];
    11 int pri[maxn];
    12 int tot;
    13 
    14 void getpri (){
    15     memset (sign,0,sizeof sign);
    16     sign[0]=sign[1]=1;
    17     for (int i=2;i<sqrt (maxn+0.5);i++)
    18         if (!sign[i])
    19             for (int j=i*i;j<maxn;j+=i)
    20                 sign[j]=1;
    21     tot=0;
    22     for (int i=2;i<maxn;i++)
    23         if (!sign[i])
    24             pri[tot++]=i;
    25 }
    26 
    27 int e[maxn];
    28 
    29 int power (int a,int b){
    30     int ans=1;
    31     while (b){
    32         if (b&1)
    33             ans*=a;
    34         a*=a;
    35         b>>=1;
    36     }
    37     return ans;
    38 }
    39 
    40 int main (){
    41     getpri ();//cout<<tot<<endl;
    42     int p,q,r,s;
    43     while (~scanf ("%d%d%d%d",&p,&q,&r,&s)/*cin>>p>>q>>r>>s*/){
    44         memset (e,0,sizeof e);
    45         int ma=max (p,r);
    46         for (int i=0;i<tot;i++){
    47             int temp=pri[i];
    48             while (temp<=ma){
    49                 e[i]+=p/temp+s/temp+(r-s)/temp;//if (i==0) cout<<ma<<" ";
    50                 e[i]-=r/temp+q/temp+(p-q)/temp;
    51                 temp*=pri[i];
    52             }
    53         }
    54         double ans=1;
    55         for (int i=0;i<tot;i++){
    56             if (e[i]>=0)
    57                 ans*=1.0*power (pri[i],e[i]);
    58             else ans/=1.0*power (pri[i],-e[i]);//cout<<e[i]<<":"<<pri[i]<<"=";//<<ans<<" ";
    59         }
    60         printf ("%.5f
    ",ans);
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    动手动脑(类与对象作业再次提交)
    论团队(类与对象邮箱作业再次提交)
    流于形式的沟通
    加密
    string类中一些方法的使用
    StringEquals的用法
    命令行接收数字求和
    计算机思维
    SpringBoot之Callable处理异步请求
    MySQL8.0 zip版本 安装
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3885583.html
Copyright © 2011-2022 走看看