車(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个不考虑顺序他的选择方案)

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #define N 1000010
 5 #define M 101
 6 using namespace std;
 7 int n,m,num,f[N],c[N],p[N],prime[N];
 8 int a1[M],b1[M],c1[N];
 9 struct node{
10     node()
11     {
12         memset(q,0,sizeof q );len=0;
13     }
14     int q[M],len;
15 };node ans;
16 void prepare()
17 {
18     for(int i=2;i<=n;i++)
19     {
20         if(!f[i])
21         {
22             prime[++num]=i;p[i]=num;
23             for(int j=2;i*j<=m;j++)
24               f[i*j]=1;
25         }
26     }
27 }
28 void work1(int x)
29 {
30     for(int i=1;i<=num;i++)
31     {
32         while(x%prime[i]==0) c[i]++,x/=prime[i];
33         if(!f[x]){ c[p[x]]++;break; }
34         if(x==1) break;
35     }
36 }
37 void work2(int x)
38 {
39     for(int i=1;i<=num;i++)
40     {
41         while(x%prime[i]==0) c[i]--,x%=prime[i];
42         if(!f[x]){ c[p[x]]--;break; }
43         if(x==1) break;
44     }
45 }
46 node cheng(node a,int b)
47 {
48     memset(a1,0,sizeof a1 );
49     memset(b1,0,sizeof b1 );
50     node c;
51     int len=a.len;
52     for(int i=1;i<=a.len;i++) a1[i]=a.q[len-i]+1;
53     for(int i=1;i<=len;i++)
54     {
55         b1[i]+=a1[i]*b;
56         b1[i+1]+=b1[i]/10;
57         b1[i]%=10;
58     }
59     if(b1[len+1]) len++;
60     c.len=min(50,len);
61     for(int i=1;i<=c.len;i++)
62       c.q[i]=b1[c.len-i+1];
63     return c;
64 }
65 int main()
66 {
67     scanf("%d%d",&n,&m);
68     if(n>m) swap(n,m);
69     prepare();
70     for(int i=m;i>=m-n+1;i--)
71       work1(i);
72     for(int i=1;i<=n;i++)
73       work2(i);
74     ans.len=1;ans.q[1]=1;
75     for(int i=1;i<=num;i++)
76       for(int j=1;j<=c[i];j++)
77         ans=cheng(ans,prime[i]);
78     for(int i=max(1,ans.len-49);i<=ans.len;i++)
79       printf("%d",ans.q[i]);
80
81
82
83     return 0;
84 }

转载于:https://www.cnblogs.com/suishiguang/p/6043134.html

济南学习 Day 5 T2 am相关推荐

  1. 济南学习 Day2 T2 am

    [问题描述] 有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则 你比较厉害.求你比较厉害的概率. [输入格式] 第一行有三个数N,l,r,含义如上描述. 接下来一行有?个数代表 ...

  2. oracle学习总结一(基础)

    oracle: 1.利用伪列号来查询中间列和后几列: 后几列:SELECT fkfs,(SELECT mc FROM  w_jsfs WHERE dm = t.fkfs) mc , COUNT(*) ...

  3. 今天在长治,明天回济南。

    今天在长治,明天回济南. 在济南工作生活的长治人还不少嘛,长治客运中心东站(汽车站)每天都有4班车到济南,每个班车至少有40个座,结果明天(2015-02-25)去济南的票卖完了. 虽然长治客运中心东 ...

  4. 2020清北学堂秋季营感想——Hoarfrost

    2020清北学堂秋季营感想 前言:九月三十日放假以后,就马不停蹄地开始了这一次的奥赛培训.原先参加过暑假的提高组腾飞营,当时第一场模拟赛拿了第一,便觉得CSP的题目难度不会很高,普及+/提高-左右的难 ...

  5. 人工智能产业政策与行业应用场景-备课资料

    ▌01 课程背景 这是对于企业课程安排的培训课程.课程名称:<人工智能产业政策与行业应用场景> 1.课程规划 所担任的课程部分包括:AI技术体系结构.开发工具.语言基础 ▲ 负责的课程部分 ...

  6. 利用JPEG制作更快,更准确的神经网络

    Uber AI Labs介绍了一种制作神经网络的方法,该方法通过破解libjpeg并利用JPEG表示来更快,更准确的完成图像处理的任务.本文来自Uber Engineering博客,LiveVideo ...

  7. 每天干的啥?(2018.11)

    [本年目标]   [本月目标]  数学计划研究完 钢琴路径 看宋大叔.教材书 [本月总结]  [11月每日记录] 96天,拿了个文件,看了一天的宋大叔(六.七.八一点) 95天,精学宋大叔八,开始宋大 ...

  8. 基于gan和孪生网络框架,利用双时间光学遥感图像绘制滑坡清单Landslide Inventory Mapping Using Bi-Temporal Optical Remote Sensin

    Landslide Inventory Mapping Using Bi-Temporal Optical Remote Sensing Images Remote Sensing Images 基于 ...

  9. oralce 集合比较 和常用方法

    PL/SQL中没有数组的概念,他的集合数据类型和数组是相似的.在7.3以前的版本中只有一种集合,称为PL/SQL表,在这之后又有两种集合数据类型:嵌套表和varray.其中varray集合中的元素是有 ...

最新文章

  1. BGP相邻体之间磋商的过程
  2. Swift 中使用 SQLite——打开数据库
  3. pandas将dataframe日期数据列的日期转化为日期当月第一天(每月1号)的日期并生成新的数据列(Setting date to beginning of month in dataframe)
  4. Python 索引for循环
  5. 大家猜猜看除了围棋,人工智能下一个颠覆的领域是什么?
  6. 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用
  7. nodejs的调试debug
  8. Netweaver和Windows,Ubuntu的数据共享
  9. 【python】获取PC机公网IP并发送至邮箱
  10. 精确的数据访问冲突_每个程序员都必须知道的8种通用数据结构
  11. django的模板系统过滤器笔记
  12. 用python画风车_用Python画小女孩放风筝的示例
  13. 产品经理认证(NPDP)知识体系指南.2017
  14. 公私钥加解密+数字签名原理图(原创)
  15. 测试用例设计方法-思维导图
  16. 遵义微红科技社群直播分销系统精选最具市场营销的功能点
  17. Chrome浏览器快捷键
  18. 阿尔法营任务黑客机器人游戏答案
  19. org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locke
  20. 京东白条如何直接取现|分分卡开通说明

热门文章

  1. 跟我一起学jQuery——第一集
  2. Linux操作Oracle(16)——Oracle扩容报错:ORA-01144_表空间数据文件超出最大限制
  3. Ubuntu MySQL性能_入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能
  4. 嵌入式软件开发工程师的养成之路——从 推挽输出 开始
  5. java合同管理系统源码下载_合同管理系统 - 源码下载|行业应用软件|源代码 - 源码中国...
  6. mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束
  7. 多个项目共用同一个redis_分区:如何在多个Redis实例之间拆分数据
  8. java contains_Java开发人员犯的十大错误,你犯几个?
  9. hnu 暑期实训之到底买不买
  10. 洛谷 P4823 [TJOI2013]拯救小矮人