Run

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

Total Submission(s): 850    Accepted Submission(s): 370



Problem Description

AFA is a girl who like runing.Today,he download an app about runing .The app can record the trace of her runing.AFA will start runing in the park.There are many chairs in the park,and AFA will start his runing in a chair and end in this chair.Between two chairs,she running in a line.she want the the trace can be a regular triangle or a square or a regular pentagon or a regular hexagon.
Please tell her how many ways can her find.
Two ways are same if the set of chair that they contains are same.

 


Input

There are multiply case.
In each case,there is a integer n(1 < = n < = 20)in a line.
In next n lines,there are two integers xi,yi(0 < = xi,yi < 9) in each line.

 


Output

Output the number of ways.

 


Sample Input

4
0 0
0 1
1 0
1 1

 


Sample Output

1

 


Source

​BestCoder Round #50 (div.2)​

 


Recommend

hujie   |   We have carefully selected several similar problems for you:   ​​5368​​​  ​​​5367​​​  ​​​5366​​​  ​​​5363​​​  ​​​5362​​ 

 

解析:官方题解:

/*

地球人都知道整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正四边形即可。假如你不是地球人,那么即使暴力枚举正三边形和稍微不那么暴力地找正五边形和正六边形也是可以通过的(反正找不到)。

*/

(外星人在此参上-_-||)

代码:

#include<cstdio>
using namespace std;

int n,f[30][30];
struct tnode{int x,y;}q[30];

int main()
{
int i,j,k,p,a,b,ans;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)scanf("%d%d",&q[i].x,&q[i].y);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
a=q[i].x-q[j].x,b=q[i].y-q[j].y;
f[i][j]=a*a+b*b,f[j][i]=f[i][j];
}

ans=0;
for(i=1;i<n;i++)
for(j=i+1;j<n;j++)
for(k=j+1;k<n;k++)
for(p=k+1;p<=n;p++)
{
if(f[i][j]==f[i][k] && f[i][j]+f[i][k]==f[j][k] &&
f[i][j]==f[j][p] && f[j][p]==f[p][k])
{ans++;continue;}
if(f[i][j]==f[i][p] && f[i][j]+f[i][p]==f[j][p] &&
f[i][j]==f[j][k] && f[j][k]==f[k][p])
{ans++;continue;}
if(f[i][k]==f[i][p] && f[i][k]+f[i][p]==f[k][p] &&
f[i][k]==f[k][j] && f[k][j]==f[j][p])
{ans++;continue;}
}
printf("%d\n",ans);
}
return 0;
}