链接:https://www.nowcoder.com/acm/contest/75/I
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述

给你一个三角形的顶点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边上的点的个数,每个数用空格隔开。
题意:中文题。

思路:
这里需要用到皮克定理,它是算点阵中顶点在格点上的多边形面积。
公式为2s=2a+b-2,其中a为多边形内部的点数,b表示多边形边界上的点数,s表示多边形的面积。
而gcd(dx,dy)可以算出该条边上除底部端点的所有在格点上的点数(dx=fabs(x1-x2),dy=fabs(y1-y2))。至于这个怎么来的,我不会证明。。
所以只要把三条边的gcd(dx,dy)加在一起就能得到在边上的格点数。
对于s可以用叉积来算,S=fabs(x1*y2-x2*y1)/2.

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
ll x[5],y[5];
ll gcd(ll x,ll y)
{if(y==0)return x;return gcd(y,x%y);
}
int main()
{while(~scanf("%lld",&x[0])&&x[0]!=-1){scanf("%lld",&y[0]);for(int i=1;i<=2;i++)scanf("%lld%lld",&x[i],&y[i]);ll a,b,c,d;double s=fabs((x[1]-x[0])*(y[2]-y[0])-(x[2]-x[0])*(y[1]-y[0]))/2;a=gcd(fabs(x[0]-x[1]),fabs(y[0]-y[1]))-1;b=gcd(fabs(x[1]-x[2]),fabs(y[1]-y[2]))-1;c=gcd(fabs(x[2]-x[0]),fabs(y[2]-y[0]))-1;d=(ll)(s-(a+b+c+3)/2+1);printf("%.1lf %lld %lld %lld %lld\n",s,d,a,b,c);}return 0;
}

牛客网 多校3 I三角形(皮克定理)相关推荐

  1. 牛客网 小白赛4 A三角形【贪心】

    [前驱]:在指定长度的棍子中找到能组成最大周长三角形的三根棍子 链接:https://www.nowcoder.com/acm/contest/134/A 来源:牛客网 题目描述 铁子从森林里收集了n ...

  2. 【牛客网多校】19-7-25-H题 Magic Line

    链接:https://ac.nowcoder.com/acm/contest/883/H 来源:牛客网 题目描述 There are always some problems that seem si ...

  3. 牛客网多校训练第一场 B - Symmetric Matrix(dp)

    链接: https://www.nowcoder.com/acm/contest/139/B 题意: 求满足以下条件的n*n矩阵A的数量模m: A(i,j) ∈ {0,1,2}, 1≤i,j≤n. A ...

  4. 牛客网多校第4场 D Another Distinct Values 【构造】

    题目:戳这里 题意,n*n的矩阵,只能填-1,0,1,问能不能使该矩阵的任意行和列的和都不想等. 解题思路:戳这里 可以说是一目了然了 附ac代码: 1 #include<iostream> ...

  5. 牛客网多校联合训练1 J Different Integers(可持久化线段树/莫队)

    题意:给你一个L,R区间,让你求1-L和R-n中有多少个数 思路:最美不过夕阳红,一直没想到拼接起来,之前想到拼接,但想的是每次都进行拼接,所以是一个n2lg的操作,最后想到了拼接全部,然后就是一个经 ...

  6. 牛客网多校第9场 E Music Game 【思维+数学期望】

    题目:戳这里 题意:鼠标点击n下,第i次点击成功的概率为p[i],连续点击成功x次可以获得x^m分,求n次点击总分数的数学期望. 解题思路:数学期望的题很多都需要转化思维,求某一个单独状态对整体答案的 ...

  7. 牛客网多校训练 德玛西亚万岁

    题目描述   来源 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意识形态,这里的人民为此感到强烈自豪. 有一天他们想去制裁邪恶的比尔吉沃特,于是派遣 ...

  8. 牛客网暑期ACM多校训练营(第三场)

    牛客网暑期ACM多校训练营(第三场) A. PACM Team 01背包,输出方案,用bool存每种状态下用的哪一个物品,卡内存.官方题解上,说用char或者short就行了.还有一种做法是把用的物品 ...

  9. 牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph

    牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph 做法:\(G'\) 中的对应原图两条边(a,b) (c,d)的最短路为: \[ w[a][b] + w[c][d] ...

  10. 牛客网暑期ACM多校训练营(第九场)

    牛客网暑期ACM多校训练营(第九场) A. Circulant Matrix 做法:看到下标 \(xor\) 这种情况就想 \(FWT\),可是半天没思路,于是放弃了..其实这个 \(n\) 疯狂暗示 ...

最新文章

  1. 6、UmbracoNewsSite:添加新闻分类
  2. vue全家桶+Koa2开发笔记(2)--koa2
  3. could not load inserted library: /usr/lib/libgmalloc.dylib
  4. Nat. Med.:iHMP之“微生物组与早产”
  5. 使用静态库.framework注意事项
  6. linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2
  7. mysql 事务回滚_SQL基础丨事务处理
  8. 推荐几个单细胞数据分享和展示平台 | 短视频演示
  9. 服务器上tomcat运行php文件路径,如何在同一服务器环境上运行PHP和Tomcat?
  10. PHP面向对象的魔术方法
  11. mac android 投屏幕,将android/ios屏幕投射到windows/mac的良好参考
  12. 【算法】剑指 Offer 31. 栈的压入、弹出序列 【重刷】
  13. 数据 正则化 python_Python数据科学:正则化方法
  14. Python3爬虫入门之Request库的使用
  15. Fiddler访问百度
  16. Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验...
  17. python编程从入门到实战16章x轴刻度_PYTHON编程:从入门到实践之数据可视化
  18. postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平台邮件服务器
  19. 大中型 UGC 平台的反垃圾(anti-spam)工作
  20. 目标决定人生——没有目标就失去一切 (转载)

热门文章

  1. word文件做一半未响应_Word 2016 开个别文档总是未响应
  2. 空间直线同球体交点求解
  3. 0-博客笔记导读目录(全部)-20220506backup
  4. EMQ X 工业物联网解决方案
  5. 游戏开发学习路线——游戏引擎原理
  6. 重装系统原来这么简单,最详细的win7安装教程
  7. 阿里云产品之基于OSS快速搭建Web网站
  8. 不支持android浏览器下载工具,android 默认浏览器 无法下载,此手机不支持此内容(自定义文件or APK文件看过了)...
  9. 于仕琪老师libfacedetection最新开源代码使用测试配置
  10. CSDN博客成长记录