usaco Combination Lock
用枚举的方法直接计算出所有的可能性,未标记加一,然后标记
/*
ID: modengd1
PROG: combo
LANG: C++
*/
#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std;
bool vis[101][101][101];
int main()
{
int a,b,c,N;
int e,f,g;
freopen("combo.in","r",stdin);
freopen("combo.out","w",stdout);
memset(vis,false,sizeof(vis));
int ans=0;
scanf("%d",&N);
scanf("%d%d%d",&a,&b,&c);
scanf("%d%d%d",&e,&f,&g);
for(int i=-2;i<3;i++)
{
for(int j=-2;j<3;j++)
{
for(int k=-2;k<3;k++)
{
int q,w,r;
q=(a+i+N)%N;
if(q==0)
{
q=N;
}
w=(b+j+N)%N;
if(w==0)
{
w=N;
}
r=(c+k+N)%N;
if(r==0)
{
r=N;
}
if(!vis[q][w][r])
{
ans++;
vis[q][w][r]=true;
}
//再来一遍
q=(e+i+N)%N;
if(q==0)
{
q=N;
}
w=(f+j+N)%N;
if(w==0)
{
w=N;
}
r=(g+k+N)%N;
if(r==0)
{
r=N;
}
if(!vis[q][w][r])
{
ans++;
vis[q][w][r]=true;
}
}
}
}
cout <<ans<< endl;
return 0;
}
浙公网安备 33010602011771号