列表

详情


BC172. 牛牛的排列数

描述

牛牛正在尝试计算一个排列数 

输入描述

输入两个正整数 n 和 m

输出描述

输出 

示例1

输入:

4 2

输出:

12

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 284KB, 提交时间: 2022-06-03

#include <stdio.h>

/*int factorial(int n , int m, int v)
{
    if (n == v)
    {
        return 1;
    }
    return n*factorial(n-1 , m, v);
    
}
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    factorial(n , m , (n-m));
    printf("%d\n", factorial(n , m, (n-m)));
    
    return 0;
}*/

int main()
{
    int n =0;
    int m = 0;
    int factorial = 1;
    scanf("%d %d", &n, &m);
    for (int i=n-m+1; i<=n; i++)
    {
        factorial *= i;
    }
    printf("%d\n", factorial );
}

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-05-13

#include<stdio.h>
int A(int n,int m){
    long int x=n-m;
    long int i,j=1,rs=1,fi=0;
    if(n==0||n==1){
        rs=1;
    }
    else{
        for(i=1;i<=n;i++){
            rs*=i;
        }
    }
    if(x==0||x==1){
        j=1;
        fi=rs/j;
    }
    else if(x<0){
        fi=0;
    }
    else{
        for(i=1;i<=x;i++){
            j*=i;
        }
          fi=rs/j;
    
    }
    return fi;
  
    
    
}
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d\n",A(a,b));
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-03-13

#include<stdio.h>

int f(int n, int m,int t)
{
	if (n == t) { return 1; }
	return n * f(n - 1, m,t);
}

int main(void)
{
	int n, m;
	scanf("%d %d", &n, &m);
	printf("%d", f(n, m,n-m));
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-06-23

int main()
{
    int n,m;
    int anm(int n,int m);
    scanf("%d %d",&n,&m);
    int ret=anm(n,m);
    printf("%d",ret);
    
    
    
    return 0;
}


int anm(int n,int m)
{
    if(m==1)
        return n;
    else
        return n*anm(n-1,m-1);
    
    
    
    
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-06-13

#include<stdio.h>
// int main()
// {
// 	int n = 0;
// 	int m = 0;
// 	scanf("%d %d", &n, &m);
// 	int a = n - m + 1;
// 	int i = 0;
// 	int sum = 1;
// 	for (i = m; i>=1; i--)
// 	{
// 		sum *= (n - i + 1);
// 	}
// 	printf("%d\n", sum);
// 	return 0;
// }
int factorial(int n , int m, int v)
{
    if (n == v)
    {
        return 1;
    }
    return n*factorial(n-1 , m, v);
     
}
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    factorial(n , m , (n-m));
    printf("%d\n", factorial(n , m, (n-m)));
     
    return 0;
}

上一题