博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2028 龙兄摘苹果
阅读量:5290 次
发布时间:2019-06-14

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

题目描述

龙兄在淘淘摘苹果的那个果园里摘了n个完全互不相同的苹果,好客的园主为他提供了k个篮子,他想把苹果装在篮子里拎回家(由于龙兄的手是无限大的,所以你不必考虑他能不能同时拎这么多篮子)。同时,他不希望有任何一个篮子里是空的,因为这样就做不到物尽其用= =。因此他想知道一共有多少种放苹果的方法,由于他的大脑运算过慢,所以找到了聪明机智的你,他在摘苹果上已经花了很长时间,所以他只能等1秒。(方法很可能非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常多,龙兄的大脑无法存储,所以他会给你一个数p,输出方法数除以p的余数就可以了)

输入格式

一行三个数,依次为n,k,p,含义如题面所示。

输出格式

一个数,方法数除以p的余数,行末有回车。

输入输出样例

输入 #1复制
4 2 3
输出 #1复制
1

说明/提示

[h1]样例解释[/h1]

一共有4个苹果,2个篮子。

有以下7种方法

{1}{2,3,4};{2}{1,3,4};{3}{1,2,4};{4}{1,2,3};

{1,2}{3,4};{1,3}{2,4};{1,4}{2,3}。

7除以3余1。

[h1]数据范围[/h1]

20%的数据,n<=8,k<=8。

60%的数据,n<=100,k<=100。

100%的数据,n<=10000,k<=1000。

保证所有数据n>=k,且答案在64位整型范围内。

 

 

#include
#include
#include
#include
#include
#include
using namespace std;unsigned long long f[10001][1001];int main(){ long long n,m,mo; scanf("%lld%lld%lld",&n,&m,&mo); f[1][1]=f[1][1]|1; for (int i=1;i<=n;i++){ f[i][1]=f[1][1]|1; for (int j=1;j<=m;j++){ if(i==1&&j==1){continue;} f[i][j]=((j%mo)*(f[i-1][j]%mo)%mo+(f[i-1][j-1])%mo)%mo; } } printf("%llu",f[n][m]);}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11261589.html

你可能感兴趣的文章
第三次作业
查看>>
Codeforces 962 /2错误 相间位置排列 堆模拟 X轴距离最小值 前向星点双连通分量求只存在在一个简单环中的边...
查看>>
Matrix快速幂 模板
查看>>
laravel command调用方法命令
查看>>
20162302 - 20162319 结对编程项目-四则运算(第一周)
查看>>
用python2和python3伪装浏览器爬取网页
查看>>
MySQL开启远程连接权限
查看>>
tomcat7.0.27的bio,nio.apr高级运行模式
查看>>
SAP HANA 三大特点
查看>>
C#预处理器命令
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
ccf 出现次数最多的数
查看>>
单例模式
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
HDUOJ ------1398
查看>>
cf--------(div1)1A. Theatre Square
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
Tomcat 报错的解决方法:The APR based Apache Tomcat Native library which allows optimal
查看>>
最长公共子串问题(LCS)
查看>>
TortoiseSVN is locked in another working copy
查看>>