博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4827 妹子[快速乘法]
阅读量:7080 次
发布时间:2019-06-28

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

4827 妹子

 

 时间限制: 1 s
 空间限制: 64000 KB
 题目等级 : 钻石 Diamond
 查看运行结果
 
 
题目描述 
Description

特大喜讯:信奥班来妹纸了!

为了给妹纸介绍自己,信奥班的才子们专门准备了一场自我介绍会,出席的就太多了,有

a,b,c,d......全是爷们儿就不一一介绍了。

a 听见有妹纸了,就自告奋勇当主持人,当然也就是第一个出场的,然后我们自

己安排出场顺序,为了不给妹纸制造紧张的气氛,我们决定把妹纸们穿插在我们之间进行

自我介绍。但是其中有一个妹纸是很爷们儿的,所以她并不想和其他的妹子相邻,而其他

的妹纸也表现出很傲慢,非要站在一起。另外,由于b 是高一的,所以我们不能让他

当出头鸟,也就是不能把他排在第2 个出场(a 之后),当然也不能欺负他,也

就是不能让他最后一个出场。

(一大堆描述终于完了,不知道你们读懂没,反正我是晕了……)

总之,信奥班有N 个男生,其中a 第一个出场,b 不能第二或者最后出场。

来了M 个女生,其中有1 个女生不能与其他女生相邻,而剩下的M-1 个女生必须相邻。

作为主持人的a 想知道我们有多少种合法的出场顺序。

 

输入描述 
Input Description

一行两个整数,N 和M,用空格隔开,分别表示N 个男生和M 个女生

输出描述 
Output Description

一行一个整数,合法方案总数,最终结果可能会很大,把它对100000007 取模再输出。

样例输入 
Sample Input

样例一:

2 2

样例二:

4 3

样例输出 
Sample Output

2

 

 

96

数据范围及提示 
Data Size & Hint

对于10%的数据:N<=5, M<=5

对于30%的数据:N<=100,M<=2

对于所有的数据:2<=N <=100000, 2<=M<=100000

 

分类标签 Tags 

 
暂无标签
10分代码(朴素乘法):
#include
#include
using namespace std;int n,m;int A(int n){ int res=1; for(int i=n;i>1;i--){ res*=i; } return res;}int solve(int n,int m){ return A(m-1)*A(n-1)*(2+(n-1)*(n-2));}int main(){ scanf("%d%d",&n,&m); printf("%d\n",solve(n,m)); return 0;}

 

AC代码:
#include
#include
using namespace std;const int mod=100000007;int go(int x,int y){
//快速乘法 x*y int res=0; while(y){ if(y&1) res=(res+x)%mod; y>>=1; x=(x+x)%mod; } return res%mod;}int A(int n){ int res=1; for(int i=n;i>1;i--) res=go(res,i); return res;}int solve(int n,int m){ return go(go(A(m-1),A(n-1)),(2+go((n-1),(n-2))));}int main(){ int n,m; scanf("%d%d",&n,&m); printf("%d\n",solve(n,m)); return 0;}

 long long即可

#include
#include
#define ll long long using namespace std;const int mod=100000007 ;ll n,m;ll A(ll n){ ll res=1; for(int i=n;i>1;i--){ res=(res*i)%mod; } return res;}ll solve(ll n,ll m){ ll x=(A(m-1)*A(n-1))%mod; return (x*(2+(n-1)*(n-2)))%mod;}int main(){ scanf("%lld%lld",&n,&m); printf("%lld\n",solve(n,m)); return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/5656529.html

你可能感兴趣的文章
Eigen教程(10)
查看>>
ambari HDFS-HA 回滚
查看>>
Linux命令:用“dirs”、“pushd”、“popd”来操作目录栈
查看>>
HTTP basic 认证
查看>>
并非全部的程序猿都适合做技术管理
查看>>
MySQL数据类型-decimal详解
查看>>
Apache Ignite——集合分布式缓存、计算、存储的分布式框架
查看>>
jQuery 效果 - 淡入淡出
查看>>
SSDB图形界面管理工具:phpssdbadmin安装部署
查看>>
how to backup and restore database of SQL Server
查看>>
Hibernate- QBC查询方式
查看>>
【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo
查看>>
php中的或运算
查看>>
位图(BitMap)索引
查看>>
CSS3伪类和伪元素的特性和区别
查看>>
vue实现文章内容过长点击阅读全文功能
查看>>
记一次elementUI Icon 加载无效的问题。并且提示错误 Failed to decode downloaded font:
查看>>
OpenGL之位图的绘制和gluOrtho2D等函数详解
查看>>
Linux磁盘概念及其管理工具fdisk
查看>>
Linux epoll版定时器
查看>>