1079 三角形[C]
来源:互联网 发布:程序员博客网站 编辑:程序博客网 时间:2024/05/12 23:26
1079 三角形
时间限制:500MS 内存限制:65536K
提交次数:283 通过次数:82
题型: 编程题 语言: C++;C
Description
著名的数学家毕达哥拉斯可能从来都不曾想过有人居然会问他这样的一个问题:给出一个整数,存在多少个直角三角形,它的某一条边的长度等于这个整数,而且其他边的长度也是整数。既然毕达哥拉斯不可能预见到有计算机的出现,如果他回答不出来,那谁又能责怪他呢?但是现在既然你有了计算机,那么回答不出来就说不过去了。
输入格式
第一行有一个整数n,代表有多少个数据(1<=n<=20)。接下来有n行,每行代表一个数据。一个数据就是一个整数ai(a<=i<=n,1<=ai<=100)。输出格式
每个数据都必须有相应的输出。两个数据的输出之间有一个空行。最后一个测试数据的输出后不要加空行。对于每一个数据,如果找不到解,则输出一个空行。如果找到解,就把符合条件的所有直角三角形输出。每个三角形占一行,输出该三角形的另外两条边,必须先输出长边,然后一个逗号,再输出短边。两个三角形之间不能有空行,而且必须按照长边降序排列。
输入样例
22012
输出样例
101,9952,4829,2125,1516,1237,3520,1615,913,5
作者
admin
思路:首先膜拜下毕达哥拉斯之神,然后这道题就是根据勾股定理思路来解题(a^2+b^2=c^2)。
这里要分两种情况讨论。
当输入n为非长边的任意边时,可根据公式
当n为长边时,就由1累积,判断是否是整数。
代码
#include <stdio.h>#include <math.h>int side[100][2];int t;void side_others(int n){ int i,n1,n2; double m1,m2; n=n*n; for(i=1; i*i<n; i++) { if(n%i==0)//是否可进行因式分解 { //a^2+b^2=c^2 //a^2=c^2-b^2=(c+b)(c-b) //设x1=(c+b),x2=(c-b) //c=(x1+x2)/2,b=(x1-x2)/2 n1=i; n2=n/i; m1=(n1+n2)/2.0; if(m1==(int)m1) { m2=fabs((n1-n2)/2.0); if(m2==(int)m2) { side[t][0]=m1; side[t][1]=m2; t++; } } } }}void side_long(int n){ int i; double m; for(i=1; i*i<=(n*n)/2; i++)//i*i大于n*n/2会造成重复 { m=sqrt(n*n-i*i); if(m==(int)m)//判断是否整数 { side[t][0]=m; side[t][1]=i; t++; } }}int main(){ int i,n,loop; scanf("%d",&loop); while(loop--) { scanf("%d",&n); t=0; side_others(n); side_long(n); for(i=0; i<t; i++) { printf("%d,%d\n",side[i][0],side[i][1]); } if(loop!=0) { printf("\n"); } }}
0 0
- 1079 三角形[C]
- c 倒三角形
- c语言 三角形
- C 求三角形面积
- [C++]打印三角形&棱形.
- codeforces--370 C--三角形
- C三角形斜边
- 1079 三角形
- 1079 三角形
- 1079 三角形
- 1079 三角形
- 1079 三角形
- 三角形面积程序C语言
- [OpenGL(C)] - 旋转立体三角形
- 【C++】判断是否为三角形
- 【c语言】三角形外心坐标
- C语言打印出杨辉三角形
- 三角形面积计算器--C语言
- 科研人员如何利用互联网查阅国外英文资料,你懂得!
- 第十五周项目三(3)
- 常用但忽略的anroid知识3-Adapter
- 【Linux】 sched_setscheduler() 和 sched_getscheduler()函数设置调度策略
- Activity和Intent
- 1079 三角形[C]
- Android 手机获取加速度传感器加速度数据并自定义采样频率
- c#中多线程刷新UI
- Codeforces 1A. Theatre Square
- SSH代理/SSH代理详细解释
- 多进程与多线程(一)--基本概念(转)
- 常用但忽略的anroid知识4-interface
- PHP反弹Cmd/Shell 脚本
- 多进程与多线程(二)--鱼与熊掌(转)