Cod sursa(job #1739490)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 9 august 2016 16:00:34
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <algorithm>
#define MAX 65536
#define Mod(x) (x&((1<<20)-1))
#define INF 2000000000
using namespace std;

int pos=0,sign=0,N;
char f[MAX];
void r(int &nr)
{
    nr=0,sign=0;
    while(f[pos]<'0'||f[pos]>'9')
    {
        if(f[pos]=='-')sign=1;
        pos++;
        if(pos==MAX)fread(f,1,MAX,stdin),pos=0;
    }
    while(f[pos]>='0'&&f[pos]<='9')
    {
        nr=nr*10+f[pos++]-'0';
        if(pos==MAX)fread(f,1,MAX,stdin),pos=0;
    }
}
int main()
{
    freopen("12perm.in","r",stdin);
    freopen("12perm.out","w",stdout);
    //fread(f,1,MAX,stdin);
	scanf("%d%d",&N);
	int v1=1,v2=2,v3=6,v4=12;
	if(N==1)
		printf("1");
	else if(N==2)
		printf("2");
	else if(N==3)
		printf("6");
	else if(N==4)
		printf("12");
	else 
	{
		for(int i=5;i<=N;i++)
		{
			v1=v2;
			v2=v3;
			v3=v4;
			v4=Mod(v3+v1+2*(i-2));
		}
		printf("%d",v4);
	}
    return 0;
}