• UVA 10375 选择与除法


    一看四个整数的范围,<=10000  所以我们肯定不能直接打表求阶乘

    利用唯一分解定理(任何一个大于1的正整数都能够被唯一地分解成质因子乘积)

    #include<iostream>
    #include<string>
    #include<string>
    #include<string.h>
    #include<stdio.h>
    #include<queue>
    #include<math.h>
    #include<vector>
    #include<stdlib.h>
    #include<algorithm>
    #define maxn 10010
    using namespace std;
    int primes[maxn],flag,t,e[maxn];
    void add_integer(int n,int d){
        for(int i=0;i<t;i++){
            while(n%primes[i]==0){
                n/=primes[i];
                e[i]+=d;
            }
             if(n==1) break;
        }
    }
    void add_factorial(int n,int d){
        for(int i=1;i<=n;i++){
            add_integer(i,d);
        }
    }
    int main(){
      int p,q,r,s;
      memset(primes,0,sizeof(primes));
      t=1;
      primes[0]=2;
        for(int i=3;i<=maxn;i++){
             flag=1;
            for(int k=2;k<=sqrt(i);k++){
                    if(i%k==0){
                        flag=0;
                        break;
                    }
                }
                if(flag){primes[t++]=i;}
            }
      while(cin>>p>>q>>r>>s){
            memset(e,0,sizeof(e));
         add_factorial(p,1);
         add_factorial(q,-1);
         add_factorial(p-q,-1);
         add_factorial(r,-1);
         add_factorial(s,1);
         add_factorial(r-s,1);
         double ans=1;
         for(int i=0;i<t;i++){
               // cout<<primes[i]<<" "<<e[i]<<endl;
            ans*=pow(primes[i],e[i]);
         }
         printf("%.5lf
    ",ans);
    
      }
    
       return 0;
    }
  • 相关阅读:
    第三次作业
    第二实验
    第一次作业
    yii2 Modal的使用
    yii2 显示列表字段 的技巧
    YII2在使用activeForm设置默认值
    html基础1
    tomcat+redis实现session共享缓存
    linux部署mongodb及基本操作
    hadoop 常用命令
  • 原文地址:https://www.cnblogs.com/wintersong/p/5259555.html
Copyright © 2020-2023  润新知