文章目录

  • 题目解答
  • 题目链接

题目解答


来源:acwing

分析:
题目要求:n位数,只能放0,1,2,3;0必须在1前面,2必须在3前面;0不能放在首位。

由于0和1有限制关系,2和3有限制关系,所以把它们分成两组。总共有n位,用组合数学的角度来考虑。具体思考过程如下图所示,n位中0和1这一组占多少位,剩下的位数让2和3来占。

不失一般性,对于A组占k位,B组占n-k位这种情况进行分析:

A组(0和1)占k位,由于0永远排在1前面,且0不能排在首位,所以A组可取的情况是Cn−1kC_{n-1}^{k}Cn−1k​,含义是:在除第一位的情况下,剩下的n-1位中选k位填0或者1,这样的话,其余的位置就填2或者3.

所以,接着考虑组内问题。对于0和1占k位,假设其中有t个0,则有k-t个1,而且呢,0只能排在1前面,所有组内的情况是和t有关,t至少为1,最大为k-1,所以共有k-1种情况。同理,对于2和3占n-k位,共有n-k-1种情况。

所以,对于对于A组占k位,B组占n-k位这种情况,总共有Cn−1k×(k−1)×(n−k−1)C_{n-1}^{k} \times (k-1) \times(n-k-1)Cn−1k​×(k−1)×(n−k−1)

则总的情况是Σk=2n−2Cn−1k×(k−1)×(n−k−1)\Sigma_{k=2}^{n-2}C_{n-1}^{k} \times (k-1) \times(n-k-1)Σk=2n−2​Cn−1k​×(k−1)×(n−k−1)


如何求组合数呢?参见笔者的另一篇博文:算法刷题-数论-组合数、快速幂、逆元、递推求组合数、逆元求组合数

ac代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1010;
const int mod = 1e9 + 7;
int c[N][N];//组合数数组
int n;int main(){cin >> n;//预处理,求组合数 c[i][j]表示i个数中选j个for(int i = 0; i<= n; i++ )for( int j = 0; j<= i; j++)if(!j) c[i][j] =1;else c[i][j] = (c[i-1][j] + c[i-1][j-1]) % mod;LL res = 0;for(int k = 2; k <= n-2; k++)res =  (res + (LL)c[n-1][k] * (k-1) * (n-k-1) % mod) % mod;cout << res <<endl;
}

题目链接

https://www.acwing.com/problem/content/3198/

CSP认证 201312-4有趣的数[C++题解]:组合数、数学相关推荐

  1. CCF CSP认证——201312

    文章目录 201312-1 出现次数最多的数 201312-2 ISBN号码 201312-3 最大的矩形 201312-4 有趣的数 201312-5 I'm stuck!    201312-1 ...

  2. CSP认证201409-4 最优配餐[C++题解]:bfs、多源bfs、最短路、图论

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 有很多起点S,同时有很多终点T,求每个终点到起点中最短的路,只要是到达其中一个起点就行.所以这是一个多源bfs的题目. ac代码 # ...

  3. CSP认证近两期试题汇总

    前言 因为了学分的需要,准备参加CSP认证,结果发现这个比赛没有题解,平台也没有提供相关讨论方式,因此决定以此来记录本人刷题解答.希望能够帮到大家,共同进步. 本人主要使用python刷题,但是pyt ...

  4. 谈一下两次CSP认证从180分到380分的感想

    最近联系我的小可爱们比较多,我用qq建了一个ccf csp考试交流群,群号673612216,如果感觉有用可以加一下哦~~ 欢迎访问我的CCF认证考试题解目录哦 https://blog.csdn.n ...

  5. #CSP 201312-4 有趣的数

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  6. csp计算机认证考试题,CCF数图 | 第22次CSP认证题目精讲已收录

    一.直击2022研招:清华.北大.国防科大等高校线上宣讲6月开播 CCF高校2022研招云宣讲时间安排(每周二和周五晚7:30-8:30) 6月1日 北京大学 6月4日 清华大学.云南大学 6月8日 ...

  7. CCF CSP认证菜鸟刷题日志

    CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...

  8. 第23次CSP认证(202109)

    第23次CSP认证---202109 第一题 :数组推导    (贪心) 第二题 :非零段划分   (差分) 第三题 :脉冲神经网络(模拟) 第四题 :收集卡牌( DP ) 第一题 :数组推导    ...

  9. CCF CSP认证考试在线评测系统

    关于CCF CSP认证考试在线评测系统 CCF CSP认证考试简介 CCF是中国计算机学会的简称.CCF计算机软件能力认证(简称CCF CSP认证考试)是CCF于2014年推出,是CCF计算机职业资格 ...

最新文章

  1. linux虚拟用户的配置
  2. Java中方法重载和方法重写的区别
  3. 活动目录ADSI实现添加系统帐号问题!!!
  4. 【Ubuntu】ubuntu物理机安装方法:U盘安装
  5. 敏捷游戏:从硬币游戏学习Scrum敏捷方法
  6. 【常用网址】——opencv等
  7. 首发骁龙665 小米CC9e 4+128G版到手价1199元
  8. 公式中*和· 号的含义区分(GRU公式)
  9. 安装插件报错:error: Microsoft Visual C++ 14.0 is required...
  10. 部署Zipkin分布式性能追踪日志系统的操作记录
  11. Unity3D基础7:Transform组件
  12. tp cli模式产生日志导致web环境写入不了
  13. rest_frameword学前准备
  14. 【图像处理基础】基于matlab图像SRGB+Adobe RGB伽马校正【含Matlab源码 255期】
  15. turboc7运行C测试 vc6.0测试
  16. Your port 80 is actually used by : Server: Microsoft-IIS/10.0 Cannot install the Apache service, p
  17. 防火墙限制TCP流量新方法
  18. matlab pn码捕获,基于PMF_FFT的PN码捕获方法及性能
  19. 富文本编辑器复制word文档中的图片
  20. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用

热门文章

  1. 快学Scala习题解答—第十章 特质
  2. Ascii码 、16进制与 char
  3. 9月——都已经9月了还不好好刷题?。。
  4. 《sqlite权威指南》读书笔记 (一)
  5. left join 临时表_图解SQL的JOIN
  6. 卷积核一定可以提升网络性能吗?-分类0,2
  7. 用神经网络二分类吸引子与排斥子
  8. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第4章-连通性保持下多移动机器人群集控制
  9. C#调用C/C++ DLL的相关说明
  10. DFT泄露问题和DFT的频率轴表示方法(第三章离散傅里叶变换(3.8,3.13.4)学习笔记)