题目链接---I-三角形

题目描述

给你一个三角形的顶点A,B,C的坐标(坐标都为整数),请求出三角形的面积,三角形内的点的个数以及边AB、BC和AC边上的点的个数(不包括顶点ABC)

输入描述:

多组输入
每组输入三行,每行两个整数
第一行顶点A的坐标Xa,Ya.
第二行顶点B的坐标Xb,Yb.
第三行顶点C的坐标Xc,Yc.
0<=X,Y<=1,000,000
输入-1结束输入

输出描述:

每组输出一行,输出一个实数(保留一位小数),四个整数,分别代表三角形面积,三角形内的点的个数以及边AB、BC和AC边上的点的个数,每个数用空格隔开。
示例1

输入

0 0
2 0
0 2
0 0
3 0
0 3
-1

输出

2.0 0 1 1 1
4.5 1 2 2 2

说明

第一组图一,第二组图二

这里我们介绍一下所涉及到的知识点:

1,皮克公式:S = 1/2×(( X1*Y2-X2*Y1) + … + (Xk*Yk+1-Xk+1*Yk )+...+( Xn*Y1-X1*Yn ))   用于求多边形的面积

需要注意的是,如果一系列点按逆时针排列算出的是正面积,而如果是顺时针的话算出的则是一个负面积。

2,多边形边上的点:gcd(边的横向长度,边的纵向长度)这里的gcd是欧几里得算法,前面已经讲过

3,多边形内部的点:S=n+s/2-1;其中n表示多边形内部的点数,s表示多边形边界上的点数,S表示多边形的面积

注意:这道题定义变量时要用long long ,我做这道题的时候忽略了这个细节,做了几遍才做对

我们来看一下这道题代码的实现:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
long long gcd(long long a,long long b)
{if(b==0)return a;long long re=gcd(b,a%b);return re;
}
int main()
{long long xa,ya,xb,yb,xc,yc;while(cin>>xa){if(xa==-1) break;cin>>ya;cin>>xb>>yb;cin>>xc>>yc;double s;s=abs(((xa*yb-xb*ya)+(xb*yc-xc*yb)+(xc*ya-xa*yc))/2.0);  long long  a,b,c;a=gcd(abs(xa-xb),abs(ya-yb))-1;   b=gcd(abs(xc-xb),abs(yc-yb))-1;c=gcd(abs(xa-xc),abs(ya-yc))-1;long long  k=1.0+s-(a+b+c+3.0)/2.0;printf("%.1lf ",s);cout<<k<<" "<<a<<" "<<b<<" "<<c<<endl;}
return 0;
} 

2018年全国多校算法寒假训练营练习比赛(第三场)---I---题(皮克公式)相关推荐

  1. 【题集】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  2. 【题集·待解决】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  3. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推

    H.了断局 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcode ...

  4. 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡

    链接:https://www.nowcoder.com/acm/contest/74/B 来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地 ...

  5. 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈

    链接:https://www.nowcoder.com/acm/contest/67/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  6. 2018年全国多校算法寒假训练营练习比赛(第一场)F. 大吉大利,今晚吃鸡——跑毒篇(模拟)

    链接:https://www.nowcoder.com/acm/contest/67/F 来源:牛客网 题目描述 现在有一款很火的游戏playerunknown's battlegrounds,人称& ...

  7. 2018年全国多校算法寒假训练营练习比赛(第一场)G. 圆圈

    链接:https://www.nowcoder.com/acm/contest/67/G 来源:牛客网 题目描述 圈圈圆圆圈圈,lulu小朋友最近看喜羊羊看多了,老是受刺激就画圆圈,听到小于8的数字时 ...

  8. 2018年全国多校算法寒假训练营练习比赛(第一场)D. N阶汉诺塔变形(找规律)

    链接:https://www.nowcoder.com/acm/contest/67/D 来源:牛客网 题目描述 相信大家都知道汉诺塔问题.那么现在对汉诺塔问题做一些限制,成为一个新的玩法. 在一个底 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第一场)C. 六子冲(模拟)

    链接:https://www.nowcoder.com/acm/contest/67/C 来源:牛客网 题目描述 六子冲是流传于中国民间的一类棋类游戏.由于这个游戏对环境的要求不高,孩子们大都是在光滑 ...

  10. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) A.吐泡泡-STL(stack)

    不好玩,一堆板子,太菜了,被打爆了,B一直wa60%,D一直wa80%,D改了多组输入就过了... A.吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

最新文章

  1. linux 环境下,yum 安装redis
  2. 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复
  3. 智慧树python程序设计基础山东联盟期末答案_智慧树Python程序设计基础(山东联盟)期末答案...
  4. 只有程序员才有的十大烦恼
  5. android 开发小工具,Android 开发者必备的八款小工具
  6. 麒麟系统兼容安卓生态 弥补生态短板
  7. ThreadLocal的非数据安全用法
  8. 李宏毅自然语言处理——文本风格转换
  9. c语言函数调用费波那楔数列,【算法】费波那契数列算法
  10. Java简单实现贪吃蛇经典小游戏(附源代码)
  11. 红帽linux64系统下载,红帽rhel6.5下载
  12. bootstrap个人简历毕业作品模板
  13. 【软件工程大作业】软件项目管理之成本管理
  14. Kubernetes pull requests
  15. 计算机网络思科DNS配置,Cisco交换机 正确连接和初级配置
  16. 【Windows】windows生成rsa密钥对
  17. Specification for the Lab VIEW Measurement File
  18. 标准盒子模型和IE盒子模型的区别
  19. 乌镇饭局后,阿里腾讯走向了分岔路
  20. JavaScript Code在线编辑器--JSEditor

热门文章

  1. VMWARE启动失败
  2. 江西省电子专题大赛考点讲解七:NE555定时器
  3. python语言turtle库画图代码示例_5分钟轻松搞定,Python开发之turtle库的基本操作...
  4. 传统的固定思维和敏捷思维的对比
  5. Unity笔记之切换鼠标图标样式、PSD格式文件导入Unity
  6. VBA从工作表另存为工作簿
  7. 不使用脚手架构建vue项目
  8. linux下的open file是什么,linux修改open files数
  9. 航芯技术分享 | 一文读懂汽车CAN总线技术原理(下)
  10. html让图片变灰色,firefox浏览器中css如何把图片变成灰色?