1 solutions
-
0
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