Cod sursa(job #203569)

Utilizator swift90Ionut Bogdanescu swift90 Data 17 august 2008 16:18:01
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>
int rest,nr[5];
int main(){
	freopen("12perm.in","r",stdin);
	freopen("12perm.out","w",stdout);
	int i,n;
	scanf("%d",&n);
	rest=1<<20;
	--rest;
	if(n==1){
		printf("1\n");
		return 0;
	}
	if(n==2){
		printf("2\n");
		return 0;
	}
	if(n==3){
		printf("6\n");
		return 0;
	}
	if(n==4){
		printf("12\n");
		return 0;
	}
	
	nr[1]=1;
	nr[2]=2;
	nr[3]=6;
	nr[0]=12;
	
	for(i=5;i<=n;++i)
		nr[i&3]=(nr[(i-1)&3] + nr[(i-3)&3] + ((i-2)<<1))&rest;
	
	printf("%d\n",nr[n&3]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}