Pagini recente » Cod sursa (job #1428736) | Cod sursa (job #118815) | Cod sursa (job #1588849) | Cod sursa (job #2430963) | Cod sursa (job #941064)
Cod sursa(job #941064)
#include <fstream>
using namespace std;
ifstream f("12perm.in");
ofstream g("12perm.out");
#define MOD(X) (X^((X>>20)<<20))
int dp[2][6][6],n;
int main()
{
dp[0][1][2]=1;
dp[0][2][1]=1;
dp[0][0][1]=1;
dp[0][0][2]=1;
int l=0;
int result=0;
f>>n;
if (n==1) g<<1<<'\n';
else if (n==2) g<<2<<'\n';
else if (n==3) g<<6<<'\n';
else
{
for(int i=4; i<=n; ++i)
{
result+=dp[l][1][2];
result=MOD(result);
dp[l^1][0][1]+=dp[l][1][2];
dp[l^1][2][1]+=dp[l][2][1];
dp[l^1][1][2]+=dp[l][2][1];
dp[l^1][2][1]+=dp[l][0][1];
dp[l^1][0][1]+=dp[l][0][2];
for(int j=0; j<3; ++j)
for(int t=0; t<3; ++t)
dp[l^1][j][t]=MOD(dp[l^1][j][t]);
l^=1;
}
for(int j=0; j<3; ++j)
for(int t=0; t<3; ++t)
result+=dp[l][j][t];
result=MOD(result*2);
g<<result<<'\n';
}
f.close();
g.close();
return 0;
}