深搜,注意模n。用set去重。
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <iomanip> #include <cstring> #include <map> #include <queue> #include <set> #include <cassert> #include <stack> #define mkp make_pair using namespace std; const double EPS=1e-8; typedef long long lon; const lon SZ=1050,INF=0x7FFFFFFF; int dx[]={-2,-1,0,1,2}; set<int> st; int n; void dfs(vector<int> x,int pos) { if(pos==3) { st.insert(x[0]*100+x[1]*10+x[2]); return; } int src=x[pos]; for(int i=0;i<5;++i) { x[pos]+=dx[i]; x[pos]=(x[pos]+n)%n; dfs(x,pos+1); x[pos]=src; } } int main() { std::ios::sync_with_stdio(0); //freopen("d:\\1.txt","r",stdin); lon casenum; //cin>>casenum; //for(lon time=1;time<=casenum;++time) { cin>>n; vector<int> vct1(n),vct2(n); for(int i=0;i<3;++i) { cin>>vct1[i]; } for(int i=0;i<3;++i) { cin>>vct2[i]; } dfs(vct1,0); dfs(vct2,0); cout<<st.size()<<endl; } return 0; }