FZU 1851 组合数
给你两个数n和m,然后让你求组合数C(n,m)中的质因子的个数。
这里用到的一个定理:判断阶乘n!中的质因子 i 的个数的方法---f(n!)=n/i+n/i^2+n/i^3+.....n/i^m (i为一个质因子,m是使n/i^m=0的最小值);
又已知C(n,m)=n!/ ( m!·(n-m)! ) ; 所以需要n!中所有的质因子的个数,然后再减去m! 和 (n-m)! 这些质因子的个数,得到的结果就是该组合数质因子的个数。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <queue>
#include <stack>
#include <map>
#include <vector>
#include <set>
#include <utility>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; const int N=1e6+;
bool book[N];
vector<int> prime;
void get_prime() //筛法预处理素数表
{
fill(book,book+N,false);
for(int i=;i<N;i++)
{
if(!book[i])
{
prime.push_back(i);
for(int j=i+i;j<N;j+=i)
book[j]=true;
}
}
}
int main()
{
//freopen("input.txt","r",stdin);
get_prime();
int n,m;
while(scanf("%d%d",&n,&m)&&n&&m)
{
int res=;
int len=prime.size();
for(int i=;i<len&&prime[i]<=n;i++)
{ //分别计算n!、m!、(n-m)! 中含有质因子prime[i]的个数,再把n!的个数减去m!和(n-m)!的个数
int tn=n,tm=m,tt=n-m,cnt=;
while(tn)
{
cnt+=tn/prime[i];
tn/=prime[i];
}
while(tm)
{
cnt-=tm/prime[i];
tm/=prime[i];
}
while(tt)
{
cnt-=tt/prime[i];
tt/=prime[i];
}
if(cnt) res++;
}
printf("%d\n",res);
}
return ;
}
FZU 1851 组合数的更多相关文章
- 【Lucas组合数定理】组合-FZU 2020
组合 FZU-2020 题目描述 给出组合数C(n,m), 表示从n个元素中选出m个元素的方案数.例如C(5,2) = 10, C(4,2) = 6.可是当n,m比较大的时候,C(n,m)很大!于是x ...
- 【转载】【转自AekdyCoin的组合数取模】
本篇文章主要介绍了"[组合数求模] 转自AekdyCoin",主要涉及到[组合数求模] 转自AekdyCoin方面的内容,对于[组合数求模] 转自AekdyCoin感兴趣的同学可以 ...
- 【转】AC神组合数取模大全
貌似少了几张图片,不过没有图片也没什么关系的感觉. 最后的究极篇也想出来了,但是貌似找不到题目,好尴尬.. 这个表示的是从n个元素中选取m个元素的方案数. (PS.组合数求模似乎只用在信息学竞赛和 A ...
- 组合数们&&错排&&容斥原理
最近做了不少的组合数的题这里简单总结一下下 1.n,m很大p很小 且p为素数p要1e7以下的 可以接受On的时间和空间然后预处理阶乘 Lucas定理来做以下是代码 /*Hdu3037 Saving B ...
- LCM性质 + 组合数 - HDU 5407 CRB and Candies
CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analy ...
- FZU 2137 奇异字符串 后缀树组+RMQ
题目连接:http://acm.fzu.edu.cn/problem.php?pid=2137 题解: 枚举x位置,向左右延伸计算答案 如何计算答案:对字符串建立SA,那么对于想双延伸的长度L,假如有 ...
- FZU 1914 单调队列
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个 ...
- ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】
FZU 2105 Digits Count Time Limit:10000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...
- FZU 2112 并查集、欧拉通路
原题:http://acm.fzu.edu.cn/problem.php?pid=2112 首先是,票上没有提到的点是不需要去的. 然后我们先考虑这个图有几个连通分量,我们可以用一个并查集来维护,假设 ...
随机推荐
- 关于我们ajax异步请求的方法与知识
做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school ...
- unity3D 使用欧拉角控制视野注意点
变量声明: public PlayerInput p; //表示控制代码用来获得用户是否按下 public float rotateSpeed = 50f; //旋转速度 private GameOb ...
- CentOS7 搭建Kafka(二)kafka篇
CentOS7 搭建Kafka(二)kafka篇 前面我们说了zookeeper的搭建,zookeeper运行后就可以着手搭建kafka了. 必看 喜欢官方文档的请移步:[http://kafka.a ...
- POJ 1330 Tarjan LCA、ST表(其实可以数组模拟)
题意:给你一棵树,求两个点的最近公共祖先. 思路:因为只有一组询问,直接数组模拟好了. (写得比较乱) 原题请戳这里 #include <cstdio> #include <bits ...
- 每日算法——新型在线LCA
在线LCA一般大家都会用倍增吧,时间复杂度O(nlogn),空间复杂度O(nlogn),都是非常严格的复杂度限制,并且各种边界处理比较麻烦,有没有更快更好的办法呢? 我们发现,在树链剖分时,我们不经意 ...
- JWPL工具处理维基百科wikipedia数据用于NLP
JWPL处理维基百科数据用于NLP 处理zhwiki JWPL是一个Wikipedia处理工具,主要功能是将Wikipedia dump的文件经过处理.优化导入mysql数据库,用于NLP过程.以下以 ...
- SQL语言入门
内容来源:唐成. PostgreSQL修炼之道[M]. 机械工业出版社, 2015. 此书购买链接:京东 亚马逊 SQL(Structured Query Language) 结构化查询语言 1. 语 ...
- jq 跨域请求
//使用getJSON <script type="text/javascript"> $(function () { $("#btn2").cli ...
- 腾讯模板引擎template
template.js是一款JavaScript模板引擎,用来渲染页面的. 原理:提前将Html代码放进编写模板 script id="tpl" type="text/ ...
- 自定义View实现拖动小圆球,并随机改变其颜色
//简单实现package com.example.demo1; import android.content.Context;import android.graphics.Canvas;impor ...