class Solution {
public:
int res=0;
vector<int>temp;
int countArrangement(int n) {
vector<bool>used(n,false);
backtracking(n,used);
return res;
}
void backtracking(int n,vector<bool>&used)
{
if(temp.size()==n)
{
res++;
return;
}
for(int i=1;i<=n;i++)
{
if(!used[i]&&Judge(i))
{
temp.push_back(i);
used[i]=true;
backtracking(n,used);
used[i]=false;
temp.pop_back();
}
}
}
bool Judge(int num)
{
if(num%(temp.size()+1)==0 || (temp.size()+1)%num==0)
{
return true;
}
return false;
}
};