code forces 407A Triangle
来源:互联网 发布:saas java开源架构 编辑:程序博客网 时间:2024/05/17 01:31
code forces 407A Triangle 题目链接:http://codeforces.com/problemset/problem/407/A
题目大意:给出三角形的两条直角边,求能否在平面上放置这样一个三角形,使得三角形的三个顶点都是整点,且没有平行于坐标轴的边。
题目分析:题目不难,数据不大,暴力即可。先定一点(0,0)另外两点在x轴上方,既然不能平行,那么两条边都是斜的,所以一个点在第一象限,另一个在第二象限。两个点分别向x轴做垂线,又构成了两个三角形。通过枚举其中一个小三角形的一条边得到图上其它所有值,如果所有值都是整数,且没有出现平行于坐标轴的边,结果就出现了。
code:
#include<stdio.h>#include<math.h>int main(){ int i,j,n,a,b; double ii,nn; bool flag; scanf("%d%d",&a,&b); flag=false; for(i=1;i<a;i++) { j=a*a-i*i; n=(int)sqrt(j*1.0); //printf("i==%d n==%d j==%d\n",i,n,j); if(n*n==j) { ii=(double)b*1.0/(double)a*i; nn=(double)b*1.0/(double)a*n; //if(a==765&&b==408) //printf("entered ii2==%f,nn2==%f,fabs(ii2+nn2-b2)=%f\n",ii*ii,nn*nn,fabs(ii*ii+nn*nn-b*1.*b)); if(fabs(ii*ii+nn*nn-b*b)<=1e-9&&fabs(ii-n)>=1e-9&&fabs(ii-floor(ii))<=1e-9) { flag=true; printf("YES\n%d %d\n",i,n); printf("0 0\n%.0lf %.0lf\n",-1*nn,ii); break; } } } if(!flag)printf("NO\n"); return 0;}
PS:没图实在不好说,blog期间现学了GIMP(只会画图的弱渣真心无力……)。
PSS:遇见了迄今为止最最奇葩的一件事。同一组样例,本地测试对,提交就错……幸好是CF,有样例反馈,最后还是一点一点改出来了
PSSS:忘了说我遇到的坑了,我的算法由于出现了double且有除法,所以会出现丢精度的现象(虽然本地没问题),我的处理方法是<=1e-9。值得一记
0 0
- code forces 407A Triangle
- code forces 1A
- code forces 377A
- code forces 505A
- Code Forces 587A
- Code Forces 588A
- [code forces] 762A
- code forces 393A Nineteen
- code forces 399A Pages
- code forces 402A Nuts
- code forces 2A Winner
- Code Forces 298 A EXAM
- Code Forces 37A Towers
- Code Forces 59A Word
- code forces E A rectangle
- Code Forces 21 A(模拟)
- 【code forces】652A模拟
- Code Forces 380 A. Sereja and Prefixes
- bellman_ford算法 python实现
- oracle闪回技术恢复误操作数据
- c\c++编程规范
- storm on Yarn
- drush 学习
- code forces 407A Triangle
- 课堂 test
- OpenCV(1)ML库->Normal Bayes分类器
- 【CentOS笔记】CentOS安装JDK
- 5
- 矩形类的构造函数
- 二哥养细菌
- php面向对象之抽象类
- Android LocalBroadcastManager