2702 - 送信活动

通过次数

0

提交次数

0

时间限制 : 2 秒 内存限制 : 2048 MB

又是一年表白日,山东建筑大学ACM协会决定为大家做点好事,于是决定在映雪长廊举办送信活动。凡是有自己喜欢的人,都可以在信上写上自己想要表达的内容,然后由我们送到他们或她们的宿舍。这天有n个人来到映雪长廊参加这个活动,因此就有n封信。现在ACM协会决定让叉叉叉去送信,送错一封很正常,可是这叉叉叉竟然将所有的信都送错了人,现在ACM协会想知道这信传错共有多少种情况。

题目输入

第一行输入一个T,代表有T组测试数据。接下来每行包含一个整数n(1<=n<=10),表示有n封信。

题目输出

输出所有信都传错的情况数。

输入/输出样例

输入格式

3
1
3
6

输出格式

0
2
265

C语言解答

#include <stdio.h>
int m = 0;
int list[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

int f(int n, int k)
{
	if (k == 0)
	{
		m++;
		return 0;
	}
	for (int i = n; i >= 1; i--)
	{
		if (i != k && list[i] == 0)
		{
			list[i] = 1;
			f(n, k - 1);
			list[i] = 0;
		}
	}
}

int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int n;
		scanf("%d",&n);
		f(n, n);
		printf("%d\n", m);
		m=0;
	}
	 return 0;
}

C++解答

#include<stdio.h>
int a[57];
int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int n,i;
    a[0]=0;
    a[1]=0;
    a[2]=1;
    for(i=3;i<=50;i++)
    {
        a[i]=(i-1)*(a[i-1]+a[i-2]);
    }
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&i);
         printf("%d\n",a[i]);
    }
    return 0;
}

Java解答

import java.util.Scanner;
class Main {
	public static void main(String[] args) {
		JingSaiTiTest test=new JingSaiTiTest();
		Scanner reader=new Scanner(System.in);
		int T=reader.nextInt();//读取一共有多少行数据
		int[] s=new int[11];//方法
		s[0]=0;s[1]=1;s[2]=2;s[3]=9;
		for(int i=4;i<11;i++){
			int first=test.arrange(i+1)-1;
			int second=0;
			for(int k=1,j=i-1;k<i-1||j>0;k++,j--){
				second=second+test.group(i+1, k)*s[j];
			}
			s[i]=first-second;
		}
		for(int k=0;k<T;k++){//输出数据
			int first=reader.nextInt();
			for(int i=0;i<11;i++){
				if(first==i){
				System.out.println(s[i-1]);
				}
			}
		}
	}

}
class JingSaiTiTest{
	public JingSaiTiTest(){		
	}
	int arrange(int a){
		int k=1;
		for(int i=1;i<=a;i++){
			k=k*i;
		}
		return k;
	}
	int group(int a,int b){
		int c=arrange(a);
		int d=arrange(b);
		int e=arrange(a-b);
		int f=c/(d*e);
		return f;
	}
	int add(int a){
			
		return 0;
	}
}