• hdu 2068:RPG的错排(错排)


    http://acm.hdu.edu.cn/showproblem.php?pid=2068

    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

    解题思路:

    只要答对一半或以上即可,那我们就对一半以下的人进行错排,对于i人的错排又有Cinom{i}{n}种选择方法。

    如果你不知道什么是错排,那么请看https://blog.csdn.net/qq_41505957/article/details/80979178

    #include <stdio.h>
    #define N 30
    long long a[N], ans[N];
    long long C(long long n, long long k)
    {
    	long long ans = 1;
    	for (int i = 1; i <= k; i++)
    	{
    		ans *= n;
    		n--;
    	}
    	while (k)
    	{
    		ans /= k;
    		k--;
    	}
    	return ans;
    }
    int main()
    {
    	long long  i, j;
    	a[0] = 1;
    	a[1] = 0;
    	for (i = 2; i <= 25; i++)
    		a[i] = (i - 1) * (a[i - 2] + a[i - 1]);
    	for (i = 1; i <= 25; i++)
    	{
    		ans[i] = 1;
    		for (j = 1; j <= i / 2; j++)
    			ans[i] += a[j] * C(i, j);
    	}
    	while (scanf("%lld", &i), i != 0)
    		printf("%lld
    ", ans[i]);
    	return 0;
    }
  • 相关阅读:
    iOS 静态、全局变量、常量
    原子性atomic/nonatomic
    iOS数组遍历
    iOS开发过程中易犯的小错误
    mac开启Airdrop的硬件要求
    Activity Monitor 闪退 & 无法进入睡眠
    在Linux中连接android设备
    网格布局(GridLayout) 行数与列数
    $符号报not defing 报错
    eclipse鼠标变成十字符号
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852559.html
Copyright © 2020-2023  润新知