博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2992 阶乘分解
阅读量:4947 次
发布时间:2019-06-11

本文共 1278 字,大约阅读时间需要 4 分钟。

/*将C(n,k)质因数分解,然后约束个数按公式计算 */#include
#include
#include
#include
using namespace std;#define ll long long int v[1000],prime[1000],m,c[200],p[200];void init(int n){ memset(prime,0,sizeof prime); memset(v,0,sizeof v); m=0; for(int i=2;i<=n;i++){ if(v[i]==0){ v[i]=i; prime[++m]=i; } for(int j=1;j<=m;j++){ if(prime[j]>v[i] || prime[j]*i>n) break; v[i*prime[j]]=prime[j]; } }}int cal(int p,int n){ int ret=0,tmp=p; while(tmp<=n){ ret+=n/tmp; tmp*=p; } return ret;}int main(){ int n,k; init(500); while(scanf("%d%d",&n,&k)==2){ memset(c,0,sizeof c); memset(p,0,sizeof p); ll ans=1; for(int i=1;i<=m;i++){ if(prime[i]>n) break; c[i]+=cal(prime[i],n); } for(int i=1;i<=m;i++){ if(prime[i]>n-k)break; c[i]-=cal(prime[i],n-k); } for(int i=1;i<=m;i++){ if(prime[i]>k) break; c[i]-=cal(prime[i],k); } for(int i=1;i<=m;i++) if(c[i]) ans*=(c[i]+1); printf("%lld\n",ans); }}

 

转载于:https://www.cnblogs.com/zsben991126/p/10231764.html

你可能感兴趣的文章
分享20个 PSD 转换为 XHTML/CSS 的教程
查看>>
软件测试-实验1
查看>>
余额宝技术架构理解(读后感03)
查看>>
正则表达式JSP实例
查看>>
[英国][记录][战争中的世界:二战全史(26集)][BD-MKV/58G][中英双字][经典收藏]
查看>>
设计模式学习笔记-建造者模式
查看>>
最大子段和
查看>>
Graph Cut and Its Application in Computer Vision
查看>>
Spring 集成RabbitMq
查看>>
1070. Mooncake (25)
查看>>
滥用vector带来的瓶颈
查看>>
Python - 进程/线程相关整理
查看>>
分布式消息队列
查看>>
数学数列
查看>>
05,总结——关于用户登录以及注册
查看>>
JavaScript操作符-位操作符
查看>>
asp访问数据库原理以及代码
查看>>
C语言的本质(21)——预处理之三:其它预处理特性及总结
查看>>
外星科技的一道算法笔试题
查看>>
Spring MVC重定向
查看>>