济南学习 Day 5 T2 am
車(Rook)
【题目描述】
众所周知,車是中国象棋最厉害的棋子之一,他能吃到同一行或者同一列的其他棋子。車显然不能和車在一打起来,于是rly有借来了许多许多車在棋盘上摆了起来......
他想知道,在n*m的棋盘上摆放最多个数的車并且使它们不能相互吃到的情况下方案数有几种。但是,由于上次摆炮摆的太累了,这次他又增加了条件,对于任何一个車A,
如果有其他的車B在它上面,(車B行号小于車A),那么車A必须在車B的右边(車A的列号大于車B)。棋子都是相同的。
【输入说明】
一行,两个正整数N和M。
【输出说明】
一行,输出方案数的末尾50位(不足则直接输出)。
【样例输入】
2 2
【样例输出】
1
【数据范围】
对于20%的数据,N<=10,M<=10。
对于40%的数据,N<=40,M<=40。
对于70%的数据,N<=10000,M<=10000。
对于100%的数据,N<=1000000,M<=1000000。
我们再来科普一下:
排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。
C(n,m)=A(n,m)/m!=n!/((n-m)!*m!)(假设n>=M)(从n个数字中选取m个不考虑顺序他的选择方案)
#include<iostream>
#include<cstring>
#include<cstdio>
#define N 1000010
#define M 101
using namespace std;
int n,m,num,f[N],c[N],p[N],prime[N];
int a1[M],b1[M],c1[N];
struct node{
node()
{
memset(q,,sizeof q );len=;
}
int q[M],len;
};node ans;
void prepare()
{
for(int i=;i<=n;i++)
{
if(!f[i])
{
prime[++num]=i;p[i]=num;
for(int j=;i*j<=m;j++)
f[i*j]=;
}
}
}
void work1(int x)
{
for(int i=;i<=num;i++)
{
while(x%prime[i]==) c[i]++,x/=prime[i];
if(!f[x]){ c[p[x]]++;break; }
if(x==) break;
}
}
void work2(int x)
{
for(int i=;i<=num;i++)
{
while(x%prime[i]==) c[i]--,x%=prime[i];
if(!f[x]){ c[p[x]]--;break; }
if(x==) break;
}
}
node cheng(node a,int b)
{
memset(a1,,sizeof a1 );
memset(b1,,sizeof b1 );
node c;
int len=a.len;
for(int i=;i<=a.len;i++) a1[i]=a.q[len-i]+;
for(int i=;i<=len;i++)
{
b1[i]+=a1[i]*b;
b1[i+]+=b1[i]/;
b1[i]%=;
}
if(b1[len+]) len++;
c.len=min(,len);
for(int i=;i<=c.len;i++)
c.q[i]=b1[c.len-i+];
return c;
}
int main()
{
scanf("%d%d",&n,&m);
if(n>m) swap(n,m);
prepare();
for(int i=m;i>=m-n+;i--)
work1(i);
for(int i=;i<=n;i++)
work2(i);
ans.len=;ans.q[]=;
for(int i=;i<=num;i++)
for(int j=;j<=c[i];j++)
ans=cheng(ans,prime[i]);
for(int i=max(,ans.len-);i<=ans.len;i++)
printf("%d",ans.q[i]); return ;
}
济南学习 Day 5 T2 am的更多相关文章
- 济南学习 Day 4 T2 am
LYK 与实验室(lab)Time Limit:5000ms Memory Limit:64MB题目描述LYK 在一幢大楼里,这幢大楼共有 n 层,LYK 初始时在第 a 层上.这幢大楼有一个秘密实验 ...
- 济南学习 Day 3 T2 pm
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB题目描述LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在(n, ...
- 济南学习 Day 3 T2 am
看程序写结果(program)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在 ...
- 济南学习 Day 2 T2 pm
她[问题描述]给你L,R,S,M,求满足L≤ (S × x) mod M ≤ R最小的正整数 X.[输入格式]第一行一个数T代表数据组数.接下来一行每行四个数代表该组数据的L,R,S,M.[输出格式] ...
- 济南学习 Day 1 T2 am
死亡[问题描述]现在有M个位置可以打 sif,有N +1个人在排队等着打 sif.现在告诉你 个人每个人需要多长的时间打 sif,问你第N +1个人什么时候才能打 sif. (前N个人必须按照顺序来) ...
- 济南学习 Day 5 T2 晚
等比数列(sequence) [题目描述] 判断一个数列是否为等比数列. 等比数列的定义为能被表示成a,aq,aq^2,aq^3...的数列,其中a和q不等于0. [输入说明] 输入文件的第一行有一个 ...
- 济南学习 Day 5 T2 pm
逆欧拉函数(arc)题目描述:已知phi(N),求N.输入说明:两个正整数,分别表示phi(N)和K.输出说明:按升序输出满足条件的最小的K个N.样例输入:8 4杨丽输出:15 16 20 24数据范 ...
- 济南学习 Day2 T2 am
[问题描述]有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则你比较厉害.求你比较厉害的概率.[输入格式]第一行有三个数N,l,r,含义如上描述.接下来一行有
- 济南学习 Day1 T2 pm
[问题描述]栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序.例如,借助一个栈,依次将数组 1,3,2 按顺序入栈或出栈,可对其从大到小排序:1 入栈:3 入栈:3 出栈:2 入栈:2 出栈: ...
随机推荐
- 解决Genymotion Error: “Unable to load VirtualBox Engine” on Yosemite. VirtualBox installed
Mac 环境,输入命令 sudo ln -s /usr/local/bin/VBoxManage /usr/bin/VBoxManage
- (转)SpringMVC学习(二)——SpringMVC架构及组件
http://blog.csdn.net/yerenyuan_pku/article/details/72231385 相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上 ...
- 【转】数据库SQL的一些总结
http://www.cnblogs.com/yank/category/104903.html
- 美可能排除中国大陆制造/生产的所有5G产品
https://www.wsj.com/articles/u-s-considers-requiring-5g-equipment-for-domestic-use-be-made-outside-c ...
- ueditor中FileUtils.getTempDirectory()找不到
2014-6-27 14:22:25 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() fo ...
- shell脚本,一个shell的启动流程。
#一个shell的启动流程 #shell有一些变量,叫做环境变量,这些变量是可以继承的, #比如父shell有$UID,子shell也可以有,而且继承父shell的. #正常我们声明一个变量,a=,在 ...
- ThinkPHP项目怎么运行?
1.下载ThinkPHP项目 2.安装核心框架framework 3.配置集成开发环境:wamp或者xampp或者phpStudy
- Web字节码(WebAssembly) Emscripten编译器安装
首先你需要提前安装 git python 环境并且Ctrl+R输入cmd在windows的dos界面下能够运行 第一步: 在github上downloade下来emsdk git clone http ...
- UVa-213-信息解码
这题的话,我们只要理解题意,应该就不算很难. 我们可以开一个二维数组,用来存放对应的编码字符,第一个下表是length,第二个下标是value,这样一来,我们在读入数据的时候就进行处理,然后想要使用的 ...
- vue-ssr 文档备注
https://ssr.vuejs.org/zh/universal.html 基本用法 通过vue-server-renderer插件的createRenderer方法创建一个renderer,再调 ...