cf 304A Pythagorean Theorem II

来源:互联网 发布:天猫和淘宝是什么关系 编辑:程序博客网 时间:2024/05/17 01:12

昨天训练赛的一个题目,看到以后直接谢了一发,然后wa了,加上了LL就可以过了,直接暴力就可以

双重循环

In mathematics, the Pythagorean theorem — is a relation in Euclidean geometry among the three sides of a right-angled triangle. In terms of areas, it states:

In any right-angled triangle, the area of the square whose side is the hypotenuse (the side opposite the right angle) is equal to the sum of the areas of the squares whose sides are the two legs (the two sides that meet at a right angle).

The theorem can be written as an equation relating the lengths of the sides ab and c, often called the Pythagorean equation:

a2 + b2 = c2

where c represents the length of the hypotenuse, and a and b represent the lengths of the other two sides.

Given n, your task is to count how many right-angled triangles with side-lengths ab and c that satisfied an inequality 1 ≤ a ≤ b ≤ c ≤ n.

#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <math.h>#include <stack>#define LL long longusing namespace std;const int INF = 0x3f3f3f3f;int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};int main(){    int cur = 0;    int m;    scanf("%d%d",&m);    for(int i = 1;i <= m;i++)    {        for(int j = i;j <= m;j++)        {            if((LL)sqrt(i*i + j*j)*(LL)sqrt(i*i + j*j) == (LL)(i*i + j*j) && (sqrt(i*i + j*j) <= m))                cur++;        }    }    cout<<cur<<endl;    return 0;}


原创粉丝点击