zoukankan      html  css  js  c++  java
  • HDOJ2068 RPG的错排

    RPG的错排

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 4631    Accepted Submission(s): 1895


    Problem Description
    今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿,G是月野兔;第二次猜:R是草儿,P是月野兔,G是公主;第三次猜:R是草儿,P是公主,G是月野兔;......可怜的野骆驼第六次终于把RPG分清楚了。由于RPG的带动,做ACM的女生越来越多,我们的野骆驼想都知道她们,可现在有N多人,他要猜的次数可就多了,为了不为难野骆驼,女生们只要求他答对一半或以上就算过关,请问有多少组答案能使他顺利过关。
     
    Input
    输入的数据里有多个case,每个case包括一个n,代表有几个女生,(n<=25), n = 0输入结束。
     
    Sample Input
    1 2 0
     
    Sample Output
    1 1
     
     1 //    愣了半天啊  我用long long 就是不行  改成__int64 就可以了 这是什么情况
     2 #include <iostream>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 __int64 a[14];     //  a[i] 表示 i 个人实现全部错排的方案个数
     7 
     8 int C(int n, int m)    // 求 C(n,m)
     9 {
    10     __int64 t = 1;
    11     __int64 tmp = 1;
    12     for(int i = 1; i <= m; ++i)
    13     {
    14         tmp *= (n - i + 1);
    15         t *= i;
    16     }
    17     return tmp / t;
    18 }
    19 
    20 int main()
    21 {
    22     a[1] = 0;
    23     a[2] = 1;
    24     for(int i = 3; i < 14; ++i)
    25         a[i] = (a[i-1] + a[i-2]) * (i - 1);
    26     int n;
    27     while(scanf("%d", &n), n)
    28     {
    29         __int64 res = 1;
    30         for(int i = 2; i <= (n >> 1); ++i)
    31         {
    32             res += a[i] * C(n, i);
    33         }
    34         printf("%I64d\n", res);
    35     }
    36     return 0;
    37 }
    功不成,身已退
  • 相关阅读:
    寄存器英文全称
    汇编指令介绍
    汇编指令的基本知识
    第一篇
    Windows下让Git记住用户名密码(https)
    javascript 汉字拼音排序
    KO.js学习笔记(一)
    学javascript突发奇想,只用浏览器就能转换进制
    谨此纪念我的技术成长之路
    委托与事件
  • 原文地址:https://www.cnblogs.com/dongsheng/p/2797976.html
Copyright © 2011-2022 走看看