小A的组合数
小A的组合数
题目描述
\(C_n^m\)表示组合,组合公式为:\(C_n^m=\frac{n!}{m!\times (n-m)!}\),请你求出\(C_n^m\)的因子个数\(tot\),由于大难会很大,请你输出的答案模上一个大数\(mod=10^9+7+cnt\)。\(cnt\)表示\(n!\)末尾\(0\)的个数。
题目解析
约数(因子)个数函数:
\\
\tau (n)=(k_1+1)(k_2+1)(k_3+1)...(k_n+1)
\]
我们可以得到:
\(k_1=\frac{n}{p_1}+\frac{n}{p_1^2}+\frac{n}{p_1^3}+....+\frac{n}{p_1^j}\)
\(k_2=\frac{n}{p_2}+\frac{n}{p_2^2}+\frac{n}{p_2^3}+....+\frac{n}{p_2^j}\)
\(k_3=\frac{n}{p_3}+\frac{n}{p_3^2}+\frac{n}{p_3^3}+....+\frac{n}{p_3^j}\)
但是由于本题是分数,所以求出来的\(k\)还要减去\(m,n-m\)里面的\(k\)
接下来就是求出\(n!\)有最后有多少个零:
易得,\(10\)是由\(2*5\)得到的
由于阶乘中\(2\)一定比\(5\)多,所以我们仅需算出\(5^k\)中的\(k\)即可,接下来就和上面思路差不多了。
CODE
#include<bits/stdc++.h>
#define ll __int128
using namespace std;
const int maxn = 2e6+43;
inline ll read_int(){
ll a=0;bool f=0;char g=getchar();
while(g<'0'||'9'<g) {if(g=='-') f=1;g=getchar();}
while('0'<=g&&g<='9') a=a*10+g-'0',g=getchar();
return f ? -a : a;
}
inline void write(ll a,bool b=1){
char lin[30];int top=0;
if(a<0) a=-a,putchar('-');
while(a){
lin[++top]=a%10+'0';
a/=10;
}
if(!top) lin[++top]='0';
while(top) putchar(lin[top--]);
if(b) putchar('\n');
}
ll wu[100]={0,5,25,125,625,3125,15625,78125,390625,1953125,9765625};
int go=11;
ll mod=1e9+7,MOD;
ll top=0,prime[maxn];
bool no[maxn];
inline void Prime(){
for(ll i=2;i<=2e6;i++){
if(!no[i]) prime[++top]=i;
for(ll e=1;e<=top&&prime[e]*i<=2e6;e++){
no[prime[e]*i]=1;
if(i%prime[e]==0) break;
}
}
}
inline void read(){
ll n=read_int(),m=read_int();
ll cnt=0;
for(int i=1;i<=10;i++) cnt+=n/wu[i];
// cout<<cnt<<endl;
MOD=mod+cnt;
ll N=n,M1=m,M2=n-m;
ll ans=1;
for(int i=1;i<=top&&prime[i]<=n;i++){
ll k=0,jl=1;
for(int e=1;jl<=n;e++){
jl*=prime[i];
k=k+(N/jl-M1/jl-M2/jl);
}
// cout<<prime[i]<<" "<<k<<endl;
ans=ans*(k+1)%MOD;
}
write(ans);
}
int main (){
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
Prime();
int T=read_int();
while(T--) read();
}
小A的组合数的更多相关文章
- 哈理工(HUST)第八届程序设计竞赛--小乐乐的组合数
这道题目是一道数学题,我们可以假设n为7,m为14. 这样的话我们就可以很清晰地看到7和7可以拼接在一起,这是一对,然后是7和14拼接在一起,第二对. 我们可以直接让n/7,m/7,这样就是1*2,就 ...
- 洛谷 P2518 [HAOI2010]计数 (组合数)
题面 luogu 题解 本来想练数位dp的,结果又忍不住写了组合数.. 去掉一个\(0\)可以看作把\(0\)移到前面去 那么题目转化为 \(n\)有多少个排列小于\(n\) 强制某一位比\(n\)的 ...
- [BZOJ 3209]花神的数论题
一道简单的数位 dp 题 但是脑子里只有 __builtin_popcountll 了呢(自重) 看完题解后很快就理解了,而且有一种这么简单的题居然没想到做法真是不应该唉~的感觉 用 f[i] 表示 ...
- [数]数学系列预习->补水题ver.
---恢复内容开始--- 话说要学反演了,contest一题都搞不定,整理题目暂且搁置,数学笨蛋来学一下数学_(:з」∠)_ ---恢复内容结束--- 是的,预习看了半天教学,没有整理,做题又都不会, ...
- 动态规划,以LeetCode-CombinationSumIV问题为例
简介: 动态规划问题面试中经常遇到的问题之一,按照动态规划的一般定义,其一般解法在于将大问题分解为很多小问题去解决,但是我在遇到很多实际的问题时,想法都是强行的去将问题分解,而忽略了分解的必要性和途径 ...
- 算法讲堂二:组合数学 & 概率期望DP
组合数学 1. 排列组合 1. 加法原理 完成一列事的方法有 n 类,其中第 i 类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有 \(a_1 + a_2 + \cdots ...
- Codeforces 643F - Bears and Juice(思维题)
Codeforces 题目传送门 & 洛谷题目传送门 首先直接暴力枚举显然是不现实的,我们不妨换个角度来处理这个问题,考虑这 \(R_i\) 个瓶子中每一瓶被哪些熊在哪一天喝过. 我们考虑对这 ...
- qbxt五一数学Day3
目录 1. 组合数取模 1. \(n,m\le 200\),\(p\) 任意 2. \(n,m\le 10^6\),\(p\ge 10^9\) 素数 3. \(n,m\le 10^6\),\(p\le ...
- 【Gym 100947E】Qwerty78 Trip(组合数取模/费马小定理)
从(1,1)到(n,m),每次向右或向下走一步,,不能经过(x,y),求走的方案数取模.可以经过(x,y)则相当于m+n步里面选n步必须向下走,方案数为 C((m−1)+(n−1),n−1) 再考虑其 ...
- hdu 4869 Turn the pokers(组合数+费马小定理)
Problem Description During summer vacation,Alice stay at home for a long time, with nothing to do. S ...
随机推荐
- 【转载】 Integrating New Games into Retro Gym
https://medium.com/aureliantactics/integrating-new-games-into-retro-gym-12b237d3ed75 OpenAI's retro ...
- 纪念IE浏览器退役,哈哈哈!!!
网址: https://haokan.baidu.com/v?pd=wisenatural&vid=16024148879625055169 ========================= ...
- 社区6月月报 | Apache SeaTunnel重要更新与优化记录
各位热爱Apache SeaTunnel的小伙伴们,社区6月份月报来啦!这里将记录Apache SeaTunnel社区每月的重要更新,欢迎关注. 月度Merge Stars 感谢以下小伙伴上个月为Ap ...
- 【粉丝问答8】如何用C语言在Linux下实现cc2530简单的上位机-v0.1
0.前言 网友提问如下: 汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块: 下位机,通过串口与上位机相连: 下位机要能够接收上位机下发的命令,并解析这些命令: 下位机能够根据这些命令配置 ...
- ASP.NET Core 如何紀錄 Entity Framework Core 5.0 自動產生的 SQL 命令
在最近的幾個 Entity Framework Core 版本,對於 Logging (紀錄) 的撰寫方式一直在改變,大致上可區分成 EF Core 2.1 , EF Core 3.0+ 與 EF C ...
- Redmi AX6000 刷 OpenWrt
一直想尝试玩玩软路由,但是家里实在没有软路由的需求,外加不知道该入手什么机器来刷软路由,所以迟迟没有入手.最近研究生要开学了,但是学校的有线网要下载专用软件认证才能上网,终于找到合适的理由入手一款软路 ...
- the request was rejected because no multipart boundary was found
报错: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.t ...
- CSS & JS Effect – Image hover animation
效果 效果来自: webflow 的一个模板 需求解释 有 3 给元素, 图片, overlay(黑影), link mouse enter 的时候, 图片要 zoom in. overlay 要 f ...
- 聊聊 iframe, CSP, 安全, 跨域
refer : https://www.cnblogs.com/kunmomo/p/12131818.html (跨域) https://segmentfault.com/a/119000000450 ...
- MySQL服务无法启动 服务没有报告任何错误
安装MYSQL后 启动服务 出现错误 在启动MySQL服务时 出现该报错 解决方法: 将原本在MySQL根目录下的my.ini文件移动到bin目录下(my.ini文件参考:这里) 删除根目录下的 ...