它计算每个C(N,M)什么号码乘以像。。。。

#include <iostream>

#include<stdio.h>

#include<vector>

#include<queue>

#include<stack>

#include<string.h>

#include<algorithm>

#include<math.h>

using namespace std;

#define LL long long

#define lcm(a,b) (a*b/gcd(a,b))

//O(n)求素数,1-n的欧拉数

#define N 110000

#define PM 11000

struct math_use

{

    int phi[N];

    vector<int>prime;

    void mkphilist()

    {

        int i,j;

        phi[1]=1;

        for(i=2; i<N; ++i)

            if(!phi[i])

                for(j=i; j<N; j+=i)

                {

                    if(!phi[j])

                        phi[j]=j;

                    phi[j]-=phi[j]/i;

                }

        prime.clear();

        for(int i=2; i<N; i++)

        {

            if(phi[i]==i-1)prime.push_back(i);

        }

    }

//N!中素因子P的个数

//复杂度p^x约等于n!,复杂度为x

    LL nump(LL n,LL p)

    {

        LL cnt=0;

        while (n)

        {

            cnt+=n/p;

            n/=p;

        }

        return cnt;

    }

} M;

int num[PM];

LL mul(LL a,LL b)

{

    LL ret=1;

    LL tmp=a;

    while(b)

    {

        //基数存在

        if(b&0x1) ret=ret*tmp;

        tmp=tmp*tmp;

        b>>=1;

    }

    return ret;

}

int pp;

void dos(LL n,LL m)

{

    int len=M.prime.size();

    int x=0;

    int ks=-1;

    for(int i=0; i<=pp; i++)

    {

        x=M.nump(n,M.prime[i])-M.nump(m,M.prime[i])-M.nump(n-m,M.prime[i]);

        num[i]=min(num[i],x);

        if(x!=0)ks=max(ks,i);

    }

    pp=min(pp,ks);

}

int main()

{

    LL n,m;

    int t;

    M.mkphilist();

    while(~scanf("%d",&t))

    {

        for(int i=0; i<PM; i++)num[i]=99999999;

        pp=M.prime.size()-1;

        for(int i=1; i<=t; i++)

        {

            scanf("%I64d%I64d",&n,&m);

            dos(n,m);

        }

        int len=M.prime.size();

        LL ans=1;

        for(int i=0; i<=pp; i++)

        {

            ans=ans*mul(M.prime[i],num[i]);

        }

        cout<<ans<<endl;

    }

    return 0;

}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

fzu-1753 Another Easy Problem-高速求N!多少个月p的更多相关文章

  1. fzu 1753 Another Easy Problem

    本题题意为求 t (t<150) 个 c (n,m)  (1<=m<=n<=100000)的最大公因子: 本题的难点为优化.主要有两个优化重点.一是每次对单个素因子进行处理,优 ...

  2. POJ 2826 An Easy Problem?!

    An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7837   Accepted: 1145 ...

  3. HDU 5475 An easy problem 线段树

    An easy problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  4. [POJ] 2453 An Easy Problem [位运算]

    An Easy Problem   Description As we known, data stored in the computers is in binary form. The probl ...

  5. Another Easy Problem fzu1753

    Another Easy Problem Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u ...

  6. zzuli 1815: easy problem 打表

    1815: easy problem Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 243  Solved: 108 SubmitStatusWeb ...

  7. hdu2601 An easy problem(数学)

    题目意思: http://acm.hdu.edu.cn/showproblem.php? pid=2601 给出一个数N,求N=i*j+i+j一共同拥有多少种方案. 题目分析: 此题直接暴力模拟就可以 ...

  8. UESTC 1591 An easy problem A【线段树点更新裸题】

    An easy problem A Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...

  9. An Easy Problem?!(细节题,要把所有情况考虑到)

    http://poj.org/problem?id=2826 An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  10. POJ 2826 An Easy Problem?![线段]

    An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12970   Accepted: 199 ...

随机推荐

  1. 解决IE6下PNG透明的JS插件:DD_belatedPNG.js

    DD_belatedPNG是一款解决IE6下PNG透明的JS插件,支持background-position和background-repeat属性,支持伪类.使用方法: <!--[if lte ...

  2. [Docker] Container & image (docker run)

    image: stopped container Run a container: docker run -d --name web -p : nigelpoulton/pluralsight-doc ...

  3. PHP正则表达式怎么匹配多行

    PHP正则表达式怎么匹配多行 一.总结 1.可以用匹配模式修饰符s来使点匹配所有字符,包括换行符. 二.PHP匹配多行的正则表达式分析 代码如下: <table> <tr>&l ...

  4. 【BZOJ 1008】[HNOI2008]越狱

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1008 [题意] [题解] 相邻就会犯罪的话; 可以考虑它的反面; 即让所有相同信仰的人 ...

  5. iOS开发- Xcode插件- 规范凝视生成器VVDocumenter 自己的见解

    xcode升级  VVDocumenter 插件失效怎么办?? 首先给个完整的安装參考:http://www.th7.cn/Program/IOS/201405/212030.shtml  參考这个能 ...

  6. java命名规则(转)

    1. JAVA源文件的命名 JAVA源文件名必须和源文件中所定义的类的类名相同. 2. Package的命名 Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com.edu ...

  7. MSYS是一个小型的GNU环境,包括基本的bash,make等等,与Cygwin大致相当(双击“D:\MinGW\msys\1.0\msys.bat”,启动MinGW终端)

    1 简介   MinGW,是Minimalist GNUfor Windows的缩写.它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和 ...

  8. 容易遗忘的JS知识点整理—hasOwnProperty相关

    为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScrip ...

  9. Cordova app 检查更新 ----创建项目、添加插件、修改插件(一)

    原文:Cordova app 检查更新 ----创建项目.添加插件.修改插件(一) 使用Cordova 进行跨平台应用程序的开发 1.创建Cordova项目 $ cordova create hell ...

  10. 关于Vuex可直接修改state问题

    下面的代码证明不通过mutation,而直接修改state修改确实生效了.这样子多人协作岂不是很容易出问题.对于这个问题,在创建 store 的时候传入 strict: true, 开启严格模式,那么 ...