Pagini recente » Cod sursa (job #3272991) | Cod sursa (job #28465) | Cod sursa (job #2032733) | Cod sursa (job #2904902) | Cod sursa (job #744054)
Cod sursa(job #744054)
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stack>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
void sol();
int main() {
#ifdef PADREATI
freopen("source.in", "r", stdin);
#else
freopen("inel.in", "r", stdin);
freopen("inel.out", "w", stdout);
#endif
sol();
return 0;
}
#define ull unsigned long long
#define N 18
#define PN 100
int n;
int hit[N+1];
int p[PN];
int g[N+1][N+1];
int len[N+1];
int bt(int pos, int level) {
if(level==n) return !p[pos+1] ? 1 : 0;
int sol = 0;
hit[pos]=true;
for(int i=0; i<len[pos]; i++) {
int next = g[pos][i];
if(!hit[next]) {
sol+=bt(next, level+1);
}
}
hit[pos]=false;
return sol;
}
void sol() {
scanf("%d", &n);
for(int i=0; i<PN; i++) {
hit[i]=false;
p[i]=0;
}
for(int i=2; i<PN; i++) {
if(p[i]==0) {
for(int j=2*i; j<PN; j+=i) {
p[j]=1;
}
}
}
for (int i=1; i<=n; i++) {
for(int j=i+1; j<=n; j++) {
if(!p[i+j]) {
g[i][len[i]++]=j;
g[j][len[j]++]=i;
}
}
}
ull sol = bt(1, 1);
printf("%llu\n", sol);
}