codeforces 304A. Pythagorean Theorem II

题目链接

给你一个n,计算出1 ≤ a ≤ b ≤ c ≤ n.使得由abc构成的三角形满足勾股定理,c为斜边。

没有简单的方法,直接爆力,但是要注意,有些abc满足勾股定理的表达式,但不一定是三角形,所以要判断一下,根据三角形三边的性质,两边之和大于第三边,两边之差小于第三边。

//cf304 A
//2013-06-05-18.14
#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        int cnt = 0;
        for (int i = 1; i < n; i++)
        {
            for (int j = 1; j < i; j++)
            {
                int t = i*i + j*j;
                int c = (int)sqrt(t);
                if (c > n)
                    continue;
                if (c*c != t)
                    continue;
                if (i+j > c && i+c > j && j+c > i && i-j < c && i-c < j && j-c < i)
                    cnt++;
            }
        }
        printf("%d\n", cnt);
    }
    return 0;
}


posted @ 2013-06-05 18:18  xindoo  阅读(234)  评论(0编辑  收藏  举报