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 5362 5361 5360 官方题解:
地球人都知道整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正四边形即可。假如你不是地球人,那么即使暴力枚举正三边形和稍微不那么暴力地找正五边形和正六边形也是可以通过的(反正找不到)。 地球人都知道,我当时尽然猪脑子的没怎么注意这点,各种几何,各种优化,之后原来竟然酱紫...... 反证法:假设存在坐标平面上的三个整点,组成了正三角形
则将其平移,将其一个顶点与坐标原点重合,则另两个顶点仍然是整点
设一个非原点的顶点M坐标为(a,b) ,另一个顶点为N(c,d), a、b、c、d都是整数 则MO的斜率=,倾斜角=arctan()
则NO的倾斜角=arctan()+ NO的斜率= 因为a、b不全等于0,所以c和d至少有一个是无理数
这和c、d都是整数矛盾
所以坐标平面上的三个整点,一定不能组成正三角形 至于正五边形和正六边形,就交给你们自己去证明了。 判断正方形:
用一个数组用于保存四个点之间的距离,求出两两点之间的距离,若数组不存在所求的距离数值,则添加进数组,若数组超过三个数值,则返回FALSE,否则返回true(其实只要两个就行了,不用距离平方比为1/2,自己举例证明...) 也可以直接算出6个点之间的距离,排下序,前四个相同后两个相同就是正方形....
#include<cstdio>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<set>
#include<time.h>
#include<vector>
#include<queue>
#include<string>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define rd(a) scanf("%d",&a)
#define rdLL(a) scanf("%I64d",&a)
#define rdd(a,b) scanf("%d%d",&a,&b)
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define MOD 1000000007
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,1,sizeof(a))
typedef pair<int , int> P; int x[25],y[25]; double getdis(int x1,int y1,int x2,int y2){
return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
} int judge(int temp[]){///判断是不是正方形
int dis[3], coun=0;
for(int xx=0;xx<4;xx++)
for(int yy=xx+1;yy<4;yy++){
int distmp = getdis(x[ temp[xx] ],y[ temp[xx] ],x[ temp[yy] ],y[ temp[yy] ]);
if(coun==0) dis[coun++]= distmp;
else if(coun==1)
{
if(distmp!=dis[0])
dis[coun++] = distmp;
}
else if(distmp != dis[0] && distmp != dis[1]) return false;
}
return true;
} int main()
{
int n;
while(~rd(n)){
for(int i=0;i<n;i++)
rdd(x[i],y[i]);
int coun = 0;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
for(int k = j+1;k<n ; k++)
for(int l = k+1 ; l<n ; l++){
int temp[4]={i,j,k,l};
if(judge(temp)) coun++;
}
printf("%d\n",coun);
}
return 0;
}

BC之Run的更多相关文章

  1. bc - An arbitrary precision calculator language

    bc(1) General Commands Manual bc(1) NAME bc - An arbitrary precision calculator language SYNTAX bc [ ...

  2. Cognos报表打开参数

    查看门户页面 http://localhost:9300/p2pd/servlet/dispatch? b_action=xts.run &m=portal/cc.xts &gohom ...

  3. sysbench_fileio.sh

    当我--file-total-size=30G 并且指定3个文件的时候,结果是产生3个10G的文件,然而--max-time=20被忽视了,虽然指定了20s的限制,实际上是在prepare阶段,--m ...

  4. 从Go语言编码角度解释实现简易区块链

    区块链技术 人们可以用许多不同的方式解释区块链技术,其中通过加密货币来看区块链一直是主流.大多数人接触区块链技术都是从比特币谈起,但比特币仅仅是众多加密货币的一种. 到底什么是区块链技术? 从金融学相 ...

  5. 从Go语言编码角度解释实现简易区块链——实现交易

    在公链基础上实现区块链交易 区块链的目的,是能够安全可靠的存储交易,比如我们常见的比特币的交易,这里我们会以比特币为例实现区块链上的通用交易.上一节用简单的数据结构完成了区块链的公链,本节在此基础上对 ...

  6. hdu 5365 Run(BC 50 B题)(求四边形的个数)

    本来准备睡觉.结果还是忍不住想把它A了.由于已经看了题解了, 题意:就是给你一些坐标.都是整数,求一些正多边形的数目,官方题讲解是地球人都知道整数坐标构不成正三角形.正五边形和正六边形的... 然而我 ...

  7. 【云计算】docker run详解

    Docker学习总结之Run命令介绍 时间 2015-01-21 17:06:00                                               博客园精华区       ...

  8. hdu 1331 Function Run Fun

    Problem Description We all love recursion! Don't we? Consider a three-parameter recursive function w ...

  9. HDU 1331 Function Run Fun(记忆化搜索)

    Problem Description We all love recursion! Don't we? Consider a three-parameter recursive function w ...

随机推荐

  1. Linux启动过程详解 (转)

    启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘 ...

  2. [tomcat] tomcat+nginx 负载均衡配置

    首先下载,安装tomcat. 修改tomcat端口,修改server.xml: 1.修改tomcat端口(默认8080) <Connector port="8383" pro ...

  3. css禁用鼠标点击事件

    css禁用鼠标点击事件 .disabled { pointer-events: none; } <div class="main-container disabled"> ...

  4. 区别: @Secured(), @PreAuthorize() 及 @RolesAllowed()

    在Spring security的使用中,为了对方法进行权限控制,通常采用的三个注解,就是@Secured(), @PreAuthorize() 及 @RolesAllowed(). 但是着三者之间的 ...

  5. mootools upgrate from 1.2 to 1.3 or 1.4

    Update from 1.2 to 1.3 lorenzos edited this page on 8 Jul 2011 · 2 revisions Pages 19 Home Home Chan ...

  6. php 连接测试sphinx

    shpinx.php <?php header("Content-type:text/html;charset=utf-8"); include 'SphinxClient. ...

  7. Neutron分析(6)—— neutron-openvswitch-agent

    neutron-openvswitch-agent代码分析 neutron.plugins.openvswitch.agent.ovs_neutron_agent:main # init ovs fi ...

  8. bzoj4709 [jsoi2011]柠檬

    Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N  ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们 ...

  9. erlang的escript脚本

    参考霸爷的博客 测试例子 #!/usr/bin/env escript %%! -smp enable -sname mmcshadow -mnesia debug verbose[/color] m ...

  10. Mysql存储过程简明使用

    mysql> \d //  改变命令行下的结束符标志mysql> create procedure p3() -> begin -> set @i=1;  # 这样也可以定义变 ...