tyvj P4877 _1.组合数
2024-10-19 15:50:21
时间限制:1s
内存限制:256MB
【问题描述】
从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数,记作C(m,n)。
你的任务是:计算C(m,n)末尾有几个0。如C(10,1)=10,末位有一个0。
【输入】
输入文件名为zero.in。
第一行一个数T(<=1000),表示数据组数
对于每一组数据:输入两个数,m和n
【输出】
输出文件名为zero.out。
对于每组数据输出一行,包含一个数,表示C(m,n)末尾有几个0
【输入输出样例】
zero.in |
zero.out |
3 10 1 11 7 20 4 |
1 1 0 |
【数据说明】
对于30%的数据,1<=m<=20;
对于70%的数据,1<=m<=1000
对于100%的数据,1<=m<=1000000
思路:
就是根据C(m,n)=m! / ( n! * (m-n)! ), 分解因数2,和5.
#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
int t,n,m;
long long sum[],ans;
void work(long long x,long long y)
{
long long p=;
while(p<=x)
{
sum[]+=y*(x/p);
p=p*;
}
p=;
while(p<=x)
{
sum[]+=y*(x/p);
p=p*;
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
sum[]=sum[]=;
work(n,);
work(n-m,-);work(m,-);
ans=min(sum[],sum[]);
printf("%d\n",ans);
} return ;
}
最新文章
- 交换排序---快速排序算法(Javascript版)
- 在Unity中高效工作(上)
- ☀【Grunt】package.json, Gruntfile.js, npm install, grunt
- DATEDIFF()(转)
- C语言入门(16)——C语言的数组
- 控制流之while
- 2017-3-28 javaScript DOM 操作
- nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]
- Unity Shader入门教程(四)反射光斑的实现
- cookie中存中文
- Django ORM 知识概要
- 网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]
- shell生成rsync同步脚本
- Linux yum源
- nginx+ flume
- 4.1、实现4个LED灯同时闪烁
- jquery 学习(一):jQuery 简介
- C标准库 二
- 处理URL传递中文乱码问题
- Appium+python HTML测试报告(2)——一份报告模板(转)
热门文章
- zero to one (4)
- 构建基于虚拟用户的vsftpd服务器
- 3170: [Tjoi 2013]松鼠聚会
- 【Lintcode】112.Remove Duplicates from Sorted List
- Oracle字段增删改方法总结
- java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
- Hibernate错误:javax/persistence/EntityListeners
- HDOj-1412
- function multi-versioning in GCC
- Python 在windows上安装BeautifulSoup和request以及小案例