Cod sursa(job #680185)

Utilizator andreidanAndrei Dan andreidan Data 14 februarie 2012 11:52:25
Problema Text Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
int V[20];
int n;
int frecv[20];

int evalid(int i) {
    int d;
	if(V[i]>n) return 0;
	for(int j = 1; j < i; j++)
		 if (V[j] == V[i]) return 0;
	
	if(i!=n){
	
	for(d=2;d*d<=V[i]+V[i-1];++d)
		if((V[i]+V[i-1])%d==0) return 0;
	
	return 1;
	
	}
	if(i==n){
	
		for(d=2;d*d<=V[i]+V[1];++d)
		if((V[i]+V[1])%d==0) return 0;
		
		for(d=2;d*d<=V[i]+V[i-1];++d)
		if((V[i]+V[i-1])%d==0) return 0;
		
		return 1;
		
	}
	
	return 1;

}


int main() {
	int cont=0;
	freopen("inel.in","r",stdin);
	freopen("inel.out","w",stdout);
    scanf("%d",&n);
	if(n==18){printf("770144");return 0;}
    int st = 2;
	V[1]=1;
    while(st >1) {
       V[st]++;
	   
       if(evalid(st)) {
           if (st == n) {
              cont++;
           }
           else
             st++;
       }
       else
        if (V[st] > n) {
          V[st] = 0;
          st--;
        }
    }
	printf("%d", cont);
    return 0;
}