2017年第0届浙江工业大学之江学院程序设计竞赛决赛—C(隔板法)
来源:互联网 发布:我爱发明 知乎 编辑:程序博客网 时间:2024/05/19 17:04
2017年第0届浙江工业大学之江学院程序设计竞赛决赛
Problem C: 勤劳的ACgirls
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 180 Solved: 77
[Submit][Status][Web Board]
Description
为了表示对acmer事业的热爱,队长wc要求每天必须至少要ac掉k题,这m天每天ac掉的题数可以用一个m元组表示。
设不同的m元组一共有c个,请问c的末尾有多少个0?(如果c是0,输出0)
Input
多组测试数据,处理到文件结束。(测试例数量<=160000)
输入的每一行是一个测试例,分别是m、n和k(0<=m,n,k<=1e9),含义如前所述。
Output
Sample Input
3 11 03 11 1999 99999 4
Sample Output
005
想法:首先我们把n题更新为n=n-m*k
n题分m天有多少分法
这我们得知道百度百科—隔板法
分法:C(n,n+m-1)=(n+m-1)!/( n )!/(m-1)!
然后我们得知道N!数末尾有多少个0
不懂可以看下点击打开链接这篇博客
代码:
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
long long check(long long n,int t)//求N!数末尾有多少个0
{
long long ans=0;
long long x=t;
while (x<=n)
{
ans+=n/x;
x*=t;
}
return ans;
}
int main()
{
long long m,n,k;
while (~scanf("%lld%lld%lld",&m,&n,&k))
{
n-=m*k;
if (n<0)
printf("0\n");
else//用隔板法求n题分m天的分法,并求出分法数末尾0的个数
{
long long xx=check(n+m-1,5)-check(n,5)-check(m-1,5);
long long x=check(n+m-1,2)-check(n,2)-check(m-1,2);
printf("%lld\n",min(x,xx));
}
}
return 0;
}
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—C(隔板法)
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 Problem C: 勤劳的ACgirls (隔板问题)
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—C
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—G(数论)
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—K(数论)
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 C: 勤劳的ACgirls
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—A
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—B
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—D
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—F
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—G
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—K
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—I
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—E
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—J
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—H
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—M
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—A
- IOS 杂笔-14(被人遗忘的owner)
- Fiddler工具常用功能使用图述
- 一些期刊的影响因子
- IOS 杂笔-13(appearance的巧妙使用)
- week15- NO.402. Remove K Digits
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—C(隔板法)
- 每日算法(一)
- IOS 杂笔-12(类别de巧用 有便于Frame的操作)
- 依赖注入学习总结
- 构造根文件系统之编译buysbox
- 学习使用MySQL 5.7的sys库--补充
- C语言预处理指令
- IOS 杂笔-11(实现在外部无法改变UIView的size)
- watchdog_dev注册过程分析(待续)