#include <iostream>
#include <vector>
using namespace std;
#define int long long
#define f first
#define s second
#define pii pair<long long,long long>
pii arr[10];
vector<int> adj[10];
bool vis[10];
int cnt;
void dfs(int n,int e){
if(vis[n])return;
if(e==1){
cnt++;
return;
}
vis[n]=true;
for(int i: adj[n]){
dfs(i,e-1);
}
vis[n]=false;
}
signed main(){
ios::sync_with_stdio(false);cin.tie();cout.tie();
// freopen("input.in","r",stdin);
int N;cin>>N;
int nb,u,r;
for(int i=0;i<N;i++){
cin>>nb;
u=nb;
arr[i].f=0;
while(u!=0){
r=u%2;
if(r==1){
arr[i].f++;
}
u-=r;
u/=2;
}
u=nb;
arr[i].s=0;
while(u!=0){
r=u%3;
if(r==1){
arr[i].s++;
}
u-=r;
u/=3;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(j==i)continue;
if(arr[i].f==arr[j].f || /*arr[i].f==arr[j].s || arr[i].s==arr[j].f ||*/ arr[i].s==arr[j].s){
adj[i].push_back(j);
}
}
}
cnt=0;
for(int i=0;i<N;i++){
vis[i]=false;
}
for(int i=0;i<N;i++){
dfs(i,N);
}
cout<<cnt;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |