1 solutions

  • 0
    @ 2024-12-10 23:55:33

    C :

    #include<stdio.h>
    long long int f(n)
    {
    
       long long int a;
        if(n==1)
        a=0;
        if(n==2)
        a=1;
        if(n>2)
        a=(n-1)*(f(n-2)+f(n-1));
        return a;
    }
    void main()
    {
        int c;
        ;
        while(scanf("%d",&c)==1)
        {
    
             printf("%.lld\n",f(c));
    
        }
    }
    
    

    C++ :

    #include<stdio.h>
    
    int main()
    {
    	long long a[21]={0,0,1};
    	int n,i;
    	for(i=3;i<=20;i++)
    		a[i]=(i-1)*a[i-1]+(i-1)*a[i-2];
    	while(scanf("%d",&n)!=EOF)
    		printf("%lld\n",a[n]);
    	return 0;
    }
    

    Pascal :

    program letter;
    var n,i:longint;
        a:array[1..20] of int64;
    begin
      a[1]:=0;
      a[2]:=1;
      for i:=3 to 20 do
        a[i]:=(i-1)*(a[i-1]+a[i-2]);
      while not(eof) do
        begin
           readln(n);
           writeln(a[n]);
        end;
    end.
    

    Java :

    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
    
    	private static int N = 25;
    	private static BigInteger[] factorial = new BigInteger[25];
    	private static BigInteger[] result = new BigInteger[25];
    	private static BigInteger notInit = BigInteger.valueOf(-1);
    
    	static {
    		factorial[0] = BigInteger.valueOf(1);
    		for (int i = 1; i < N; i++) {
    			factorial[i] = factorial[i - 1].multiply(BigInteger.valueOf(i));
    			result[i] = notInit;
    		}
    
    		result[0] = BigInteger.valueOf(0);
    		result[1] = BigInteger.valueOf(0);
    		result[2] = BigInteger.valueOf(1);
    	}
    
    	public static BigInteger combination(int m, int n) {
    		return (factorial[n].divide(factorial[n - m])).divide(factorial[m]);
    	}
    
    	public static BigInteger noteasy(int n) {
    
    		BigInteger finalResult = null;
    
    		if (!result[n].equals(notInit)) {
    			finalResult = result[n];
    		} else {
    			finalResult = factorial[n];
    			for (int i = 1; i <= n - 2; i++) {
    
    				finalResult = finalResult.subtract(combination(i, n).multiply(
    						noteasy(n - i)));
    			}
    			finalResult = finalResult.subtract(BigInteger.valueOf(1));
    			result[n] = finalResult;
    		}
    
    		return finalResult;
    
    	}
    
    	public static void main(String[] args) {
    
    		Scanner cin = new Scanner(System.in);
    		while (cin.hasNext()) {
    			int n = cin.nextInt();
    			System.out.println(noteasy(n));
    
    		}
    
    	}
    
    }
    
    
    • 1

    Information

    ID
    660
    Time
    1000ms
    Memory
    32MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By