zoukankan      html  css  js  c++  java
  • 洛谷 P1595 信封问题(周五杂题选讲)(错排公式)

    题目描述

    某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。

    输入输出格式

    输入格式:

    一个信封数n(n<=20)

    输出格式:

    一个整数,代表有多少种情况。

    题解

    本题即为伯努利信封问题

    360百科:错排公式

    STD

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 int b(int n)
     5 {
     6     if (n==1) return 0;
     7     else if (n==2) return 1;
     8     else return (n-1)*(b(n-1)+b(n-2));
     9 }
    10 int main()
    11 {
    12     ios::sync_with_stdio(false);
    13     cin>>n;
    14     cout<<b(n);
    15     return 0;
    16 }

    然而这题范围只有二十...

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 int main(){
     5     cin>>n;
     6     if(n==1){
     7         cout<<0;
     8         return 0;
     9     }
    10     if(n==2){
    11         cout<<1;
    12         return 0;
    13     }
    14     if(n==3){
    15         cout<<2;
    16         return 0;
    17     }
    18     if(n==4){
    19         cout<<9;
    20         return 0;
    21     }
    22     if(n==5){
    23         cout<<44;
    24         return 0;
    25     }
    26     if(n==6){
    27         cout<<265;
    28         return 0;
    29     }
    30     if(n==7){
    31         cout<<1854;
    32         return 0;
    33     }
    34     if(n==8){
    35         cout<<14833;
    36         return 0;
    37     }
    38     if(n==9){
    39         cout<<133496;
    40         return 0;
    41     }
    42     if(n==10){
    43         cout<<1334961;
    44         return 0;
    45     }
    46     if(n==11){
    47         cout<<14684570;
    48         return 0;
    49     }
    50     if(n==12){
    51         cout<<176214841;
    52         return 0;
    53     }
    54     if(n==13){
    55         cout<<2290792932;
    56         return 0;
    57     }
    58     if(n==14){
    59         cout<<32071101049;
    60         return 0;
    61     }
    62     if(n==15){
    63         cout<<481066515734;
    64         return 0;
    65     }
    66     if(n==16){
    67         cout<<7697064251745;
    68         return 0;
    69     }
    70     if(n==17){
    71         cout<<130850092279664;
    72         return 0;
    73     }
    74     if(n==18){
    75         cout<<2355301661033953;
    76         return 0;
    77     }
    78     if(n==19){
    79         cout<<44750731559645106;
    80         return 0;
    81     }
    82     if(n==20){
    83         cout<<895014631192902121;
    84         return 0;
    85     }
    86 }

    不要问我第二段从哪来的,我是打出STD后CV大法搞出来的...

  • 相关阅读:
    22:django 配置详解
    21:序列化django对象
    20:django中的安全问题
    19:django 分页
    HTML 标签(一)
    流程图学习绘制
    HTTP原理
    终端的颜色代码
    Python 进程 线程总结
    Python Select模型
  • 原文地址:https://www.cnblogs.com/Alarak26/p/8535493.html
Copyright © 2011-2022 走看看