Cod sursa(job #865019)

Utilizator stoicatheoFlirk Navok stoicatheo Data 25 ianuarie 2013 22:40:22
Problema 12-Perm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
using namespace std;
const int M=(1<<20)-1;
int n,i,A,B,C,D,E;
int main()
{
    freopen("12perm.in","r",stdin);
    freopen("12perm.out","w",stdout);
    scanf("%d",&n);
    A=1; B=2; C=6; D=12;
    if(n==1) {printf("%d\n",A);return 0;}
    if(n==2) {printf("%d\n",B);return 0;}
    if(n==3) {printf("%d\n",C);return 0;}
    if(n==4) {printf("%d\n",D);return 0;}
    for(i=5;i<=n;i++)
    {
        E=(D+B+2*(i-2))&M;
        //x % (2^k) = x & (2^k-1)
        //sol[i]=sol[i-1]+sol[i-3]+2*(i-2)
        A=B; B=C; C=D; D=E;
    }
    printf("%d\n",E);
    return 0;
}