数论--错排

简介: 先上唯一看得懂的错排概念,大概像递推dp一样?分情况分步骤往上级递推出的公式

概念


先上唯一看得懂的错排概念,大概像递推dp一样?分情况分步骤往上级递推出的公式,具体过程如下:

20210406211947669.png

新郎官题目大意:


假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.


思路:也算是一种错排的扩展,但是得用到排列组合的公式,从n对新婚夫妇里选m个新郎。


#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
    int n,m,i,j,t;
    cin>>t;
    while(t--){
        cin>>n>>m;
            int dp[25];
            dp[1]=0;
            dp[2]=1;
            for(i=3;i<=n;i++)
                 dp[i]=(i-1)*(dp[i-1]+dp[i-2]);
            int mo=1,zi=1,z2=1,z3=1;
            for(i=1;i<=n;i++)
                   mo*=i;
            for(i=1;i<=(n-m);i++)
                   z2*=i;
            for(i=1;i<=m;i++)
                    z3*=i;
            cout<<(dp[m])*((mo)/(z2*z3))<<endl;
    }
}


老天爷签名大意:


首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;

然后,待所有字条加入完毕,每人从箱中取一个字条;

最后,如果取得的字条上写的就是自己的名字

求都不中奖的概率。

思路:首先列出所有的可能,然后再除以都不中奖的可能,都不中奖也就是错排的方案数.

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
        int n,i,j,t,dp[25];
        dp[0]=0,dp[1]=0,dp[2]=1;
        for(i=3;i<=20;i++){
            dp[i]=(i-1)*(dp[i-1]+dp[i-2]);
        }
        int sum[25];
        sum[0]=0,sum[1]=1,sum[2]=2;
        for(i=3;i<=20;i++){
            sum[i]=i*sum[i-1];
        }
        cin>>t;
        while(t--){
                cin>>n;
                double ans1;
                 ans1=dp[n]*1.0/sum[n];
                 ceil(ans1);
                 ans1*=100;
                 //cout<<dp[n]<<" " <<sum[n]<<endl;
                 printf("%.2lf%%\n",ans1);
        }
}
相关文章
|
3天前
|
算法 测试技术 C#
【状态压缩 动态规划 数论】1799. N 次操作后的最大分数和
【状态压缩 动态规划 数论】1799. N 次操作后的最大分数和
|
3天前
|
算法 测试技术 C++
【数学归纳法 组合数学】容斥原理
【数学归纳法 组合数学】容斥原理
|
8月前
蓝桥杯:最大公约数 2020省赛 例题:既约分数
蓝桥杯:最大公约数 2020省赛 例题:既约分数
41 0
|
3天前
|
算法 测试技术 C#
【动态规划】【 数位dp】2827. 范围中美丽整数的数目
【动态规划】【 数位dp】2827. 范围中美丽整数的数目
|
3天前
|
算法 测试技术 C#
【数位dp】【数论】【动态规划】2999. 统计强大整数的数目
【数位dp】【数论】【动态规划】2999. 统计强大整数的数目
|
9月前
|
人工智能 算法
算法提高:组合数学| 容斥原理常见应用
容斥原理常见的问题如下。 (1) 篮球、羽毛球、网球三种运动,至少会一种的有22人,会篮球的有15人,会羽毛球的有17人,会网球的有12人,既会篮球又会羽毛球的有11人,既会羽毛球又会网球的有7人,既会篮球又会网球的有9人,那么三种运动都会的有多少人? (2) 《西游记》《三国演义》《红楼梦》三大名著,至少读过其中一本的有20人,读过《西游记》的有10人,读过《三国演义》的有12人,读过《红楼梦》的有15人,读过《西游记》《三国演义》的有8人,读过《三国演义》《红楼梦》的有9人,读过《西游记》《红楼梦》的有7人。问三本书全都读过的有多少人?
102 0
算法提高:组合数学| 容斥原理常见应用
|
11月前
|
存储
蓝桥杯19国赛-矩阵计数
蓝桥杯19国赛-矩阵计数
57 0
|
11月前
|
Python
深入理解动态规划算法 | 凑整数
深入理解动态规划算法 | 凑整数
80 0
|
机器学习/深度学习
数论整理之特殊数two:卡特兰数
数论整理之特殊数two:卡特兰数
|
算法 C++
容斥原理算法的实现
容斥原理算法的实现
容斥原理算法的实现