Light oj 1095 - Arrange the Numbers(错排)

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真 自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P 阅读详情

1095 - Arrange the Numbers
Time Limit: 2 second(s)Memory Limit: 32 MB

Consider this sequence {1, 2, 3 ... N}, as an initial sequence of first N natural numbers. You can rearrange this sequence in many ways. There will be a total of N! arrangements. You have to calculate the number of arrangement of first N natural numbers, where in first M positions; exactly K numbers are in their initial position.

For Example, N = 5, M = 3, K = 2

You should count this arrangement {1, 4, 3, 2, 5}, here in first 3 positions 1 is in 1st position and 3 in 3rd position. So exactly 2 of its first 3 are in there initial position.

But you should not count {1, 2, 3, 4, 5}.

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases.

Each case contains three integers N (1 ≤ N ≤ 1000), M (M ≤ N), K (0 < K ≤ M).

Output

For each case, print the case number and the total number of possible arrangements modulo 1000000007.

Sample Input

Output for Sample Input

2

5 3 2

10 6 3

Case 1: 12

Case 2: 64320

 


PROBLEM SETTER: MD. ARIFUZZAMAN ARIF
SPECIAL THANKS: JANE ALAM JAN (SOLUTION, DATASET)




#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define bug printf("hihi\n")

#define eps 1e-12

typedef long long ll;
using namespace std;

#define mod 1000000007
#define N 1005

ll C[N][N];
ll f[N];

int n,m,k;

void inint()
{
    int i,j;
    for(i=0;i<N;i++)
        for(j=0;j<=i;j++)
           if(j==0) C[i][j]=1;
          else
            C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;

   f[0]=1;
   f[1]=0;
   f[2]=1;
   for(i=3;i<N;i++)
     f[i]=(ll)(i-1)*(f[i-1]+f[i-2])%mod;
}

ll solve()
{
    int i,j;
    ll sum=0;
    int t=n-m;
    for(i=0;i<=t;i++)
        sum=(sum+C[n-m][i]*f[m-k+i]%mod)%mod;
    return (ll)sum*C[m][k]%mod;
}

int main()
{
    inint();
    int i,j,t,ca=0;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d",&n,&m,&k);
        printf("Case %d: %lld\n",++ca,solve());
    }
    return 0;

}

/*

2
5 3 2
10 6 3

*/


ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望 ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的 阅读详情

相关推荐

灵魂三问:因果推断

什么是因果推断?为什么研究因果推断?怎么进行因果推断研究?

ML OR 智能决策的博客 2902

LightOJ - 1095 - Arrange the Numbers(组合数+错排公式)

1095 - Arrange the Numbers PDF (English) Statistics Forum Time Limit:2 second(s) Memory Limit:32 MB Consider this sequence{1, 2, 3 ... N}, as an initial sequence of firstNnat...

LSD20164388的博客 538

RYU+mininet——RYU

1. 使用RYU做mininet的控制器 1.1 RYU介绍与安装 RYU是一款基于python的控制器,你可用Ryu实现各种想要实现的网络功能,它可以下发或接收流表进行各种路由运算。 建议使用高版本的Ubuntu系统安装ryu,否则会有各种错误,安装过程比较简单,如下: apt install gcc libffi-dev libssl-dev libxml2-dev libxslt1-...

qq_34415266的博客 1万+

UVa 11481 Arrange the Numbers (组合数学+容斥原理)

UVa 11481 Arrange the Numbers题目大意:可以将序列1,2,3,...n1,2,3,...n任意重排,但重排后的前mm(m≤nm\leq n)个位置恰好有kk(k≤mk\leq m)个不变,求方案数除以1000000007的余数. (注意是前m个位置恰好有k个不变,也就是说前m个位置的另外m-k个必须改变)题目分析:首先,前m个位置恰好有k个不变,则有CkmC_{m}^{

Continue 712

NVIDIA Orin AGX开发环境搭建避坑指南:从Ubuntu 22.04到ROS2完整配置流程

本文详细介绍了NVIDIA Orin AGX开发环境搭建的全流程,从Ubuntu 22.04系统安装到ROS2深度优化,涵盖驱动部署、CUDA环境配置、散热与功耗管理等关键步骤。特别针对Orin AGX的特性提供了实用避坑指南和性能优化技巧,帮助开发者高效完成开发环境配置。

weixin_28340315的博客 451

【虚幻引擎】UE4初学者系列教程基础篇-全中文新手入门教程(UE5系列继续更新)

菜单栏菜单栏当中有文件、编辑、窗口帮助。文件当中可以进行一个关卡的新建、关卡的打开、关卡的保存还有就是打包项目,(项目大于关卡,项目里面可能有几百个关卡),这是比较常用的几个,这里可以看到打包当中有安卓端HTML5端,IOS端linux,还有就是TVOS(苹果电视)、windows的一些端口的一些设置。还可以打开最近打开的项目。关卡编辑器:工具栏3.3 “模式”面板保存所有:ctrl+shift+s(有的软件截屏也是这个按键需要注意)3.4 “内容浏览器”面板缩放:ctr+鼠标滚轮3.5.视口面板。

qq_45206556的博客 2万+

UVA 11481 - Arrange the Numbers(组合数学)

题目链接:11481 - Arrange the Numbers 题意:序列1-n,进行重排,问最后前m个中有k个仍然位置不变的情况数 思路:之前写过UVA 580, n个数重排,要求每个位置都不同的情况的题目,递推式为dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2]) 利用这个,这题只要: k个位置C(m, k) * sum(C[n - m][i] (后面

Remilia's 1650

VisionMaster Qt二次开发:图像获取、COM组件渲染与本地化存储实战

本文详细介绍了基于VisionMaster进行Qt二次开发的核心实战流程,涵盖环境搭建、方案加载、图像数据获取、COM组件渲染与本地化存储。重点解析了如何通过COM组件在Qt界面中实时显示图像,以及将VM图像数据转换为QImage并保存为本地文件的关键步骤与常见问题,为工业视觉项目开发提供稳定高效的解决方案。

weixin_29229261的博客 205

卡特兰数与错排公式 — 例题讲解,欢迎回复交流

卡特兰数与错排公式 在很多算法题目中,我们经常遇到计数类型的问题。直观的来说,我们会去寻找其直接计算的公式,或者递推计算的规律。然而找规律是一件很需要灵感的事情,且在短时间内往往难以确定其是否完备可靠。事实上,很多计数问题都已经被前人反复研究证明,有了简化而优美的模型。 卡特兰数和错排公式是我个人在算法问题中遇到的比较多两个问题,因此想要专门记录一下。后续如果再遇到类似有固定的递推公式解法的问题,...

JosephPai的博客 600

CAN 比特率和采样点计算

架构根据输入频率和比特率自动计算。

ldinvicible的专栏 787

012、乘累加单元(MAC):NPU中最基本的计算单元

本文深入剖析了神经网络处理器(NPU)中的核心计算单元——乘累加单元(MAC)。作者通过实际调试案例揭示了MAC单元设计中的关键问题:定点数格式对齐、累加器位宽陷阱、流水线优化和多MAC同步方案。重点讨论了INT8量化中的边界条件处理、偏置项截断风险以及零值检测等实战经验,并提供了三点实用建议:建立精确的C模型、参考RISC-V P扩展指令集、仔细审查芯片规格书。文章强调硬件加速的实际瓶颈往往在于数据搬运而非计算单元本身,为NPU开发者提供了宝贵的工程实践参考。

m0_50546716的博客 298

UVA11481 - Arrange the Numbers

递推

ACoder 280

YoloV10改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。改进方法简单高效,需要发论文的同学不要错过!

m0_47867638的博客 1094

lightoj1095 Arrange the Numbers 组合数学

题目: Consider this sequence {1, 2, 3 ... N}, as an initial sequence of first N natural numbers. You can rearrange this sequence in many ways. There will be a total of N! arrangements. You have to ca

Na_OH的博客 515

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LightOJ 1095 Arrange the Numbers(容斥原理)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意:给出数字n,m,K(0&lt;K&lt;=m&lt;=n)。在n个数字(1到n)的所有全排列中(有n!个),有多少个满足前m个数字恰有K个数字是不变的? 思路:首先应该在前m个中选出K个作为不变的,有C(m,K)种,接着,前m个中剩下的m-K个必须都不能自己放自...

weixin_34319640的博客 135

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Light OJ 1095 Arrange the Numbers (容斥)

解析: 先从前M个中取出K个,剩下的所有的排列个数为(n-k)!; 然后剩下的M-K中取出1个放在其初始位置,剩下的排列个数为(n-k-1)!; ............ 最后容斥原理求解便是。 [code]: #include #include #include #include #include using namespace std; typedef long long LL;

Neutralzz的博客 302

Light oj 1095 - Arrange the Numbers (组合数学+递推)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意: 给你包含1~n的排列,初始位置1,2,3...,n,问你刚好固定前m个数中的k个数的位置,问你有多少中排列方案。(比如5 3 2有1 4 3 2 5这种方案,1和3固定了) 思路: 前m个取k个就是C(m, k)个方案。然后...

weixin_30273175的博客 125

LightOJ 1095 Arrange the Numbers (容斥原理)

题意 : 1到n的排列中前m个中恰好有k个数每个数都和他的下标相同。问这样有几个 ? 答案取模。 思路 : 前m个(1~m)选择k个是组合数C(m, k)种, 然后令x = m - k, y = n - m; 则 x中会有[0, x]个位置是下标和值一样, 这里可以利用容斥原理做,即减去i为奇数的加上i 为偶数的。 ans = C(m, k) * ∑ (C(x, i) * (x + y - i

Dewey's blog 2010

kuangbin 数学训练二 Arrange the Numbers

题目链接: 传送门 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N = 1010; const ll p = 1000000007; ll t, n, m, r, ca; ll fact[N], infact[N], d[N]; //快速幂模板 ll qm

weixin_45867800的博客 278

硬核优化

%:pragma GCC optimize(3) %:pragma GCC optimize(&quot;Ofast&quot;) %:pragma GCC optimize(&quot;inline&quot;) %:pragma GCC optimize(&quot;-fgcse&quot;) %:pragma GCC optimize(&quot;-fgcse-lm&quot;) %:pragma GCC optimize(&qu

一个AFO的蒟蒻 2826

uva 11481 - Arrange the Numbers(计数问题)

题目链接:uva 11481 - Arrange the Numbers 题目大意:给出n,m和k,表示有一个序列,由1~n组成,有序,现在将这个序列重排,问有多少种重排序列满足:前m个中恰好有k个的位置不变(即i=pos[i])。 解题思路:首先c=C(km)为前m个数选中k个位置保持不变,然后枚举后n-m个中有多少个数的位置是不变的,C(in−m),这样就有n−k−i个数为乱序排列

不慌不忙、不急不躁 1528

LightOJ - 1095 Arrange the Numbers(错排数)

思路:首先前m个数中有k个位置是不变的,所以先选出来有C(n, k)种,然后在前m个数中肯定有(m - k)个数是错排的,后边(n - m)个数不确定,那么可以枚举后边(n - m)个数有i个数没有参与错排,那么没有参与错排的共有k+i个,参与错排的就有n-k-i个,共有C(n-m, i)* d(n - k - i)种。 那么答案就是C(n,k) * ∑(C(n-m, i)* d(n - k -

fly_tzf的博客 418

uva11481 - Arrange the Numbers N个数前M个错排

Consider this sequence {1, 2, 3, … , N}, as a initial sequence of firstN natural numbers. You can rearrange this sequence in many ways. Therewill be N! different arrangements. You have to calculate t

1159

lightoj 1095 - Arrange the Numbers 组合数学

给定n,m,k,n个数字中前m个数字有k个数字位置定下来,问有多少种排列方式.. 这种组合数学是我最不擅长的,虽然挂在DP专题里但是想不来怎么DP。 感觉就是先有一个c(m,k)..然后就是队友辅助推导了公式.. #include using namespace std; #define ll long long #define mod 1000000007 ll yh[1200][1200

567

uva11481 Arrange the Numbers(错位排列)

关键词:错位排列 题意:求1-n的条件排列个数 条件为:前m个数中有恰k个数满足a[i]==i 解法:递推。

acmer的随记 592

HDU 5187 zhx's contest(防爆__int64 )

Problem Description As one of the most powerful brushes, zhx is required to give his juniors n problems. zhx thinks the ith problem's difficulty is i. He wants to arrange these problems in a

左眼皮跳跳 1492

HDU 5194 DZY Loves Balls(排列组合瞎搞 )

Problem Description There are n black balls and m white balls in the big box. Now, DZY starts to randomly pick out the balls one by one. It forms a sequence S. If at the i-th operation,

左眼皮跳跳 1379
上一篇: ZOJ 1027 Human Gene Functions(dp)
下一篇: Light oj 1105 - Fi Binary Number(计数)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值