zoukankan      html  css  js  c++  java
  • 勾股定理

    勾股定理

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

    给N个数,判断这N个数中存在多少组勾股数(勾股数:存在三个数满足a*a + b*b = c*c)。

    输入

    第一行输入一个数T(1<=T<=50),表示有T组数据。
    每组数据输入一个N(1<=N<=1000)。
    接下来N个数ai(1<=ai<=10^9)。

    输出

    每组数据输出一行,表示有多少组勾股数。

    示例输入

    3
    4
    4 3 5 3
    4 
    6 7 8 10
    5
    6 7 8 9 5

    示例输出

    2
    1
    

    0

    #include<iostream>
    #include<math.h>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    
     using namespace std;
    
     #define LL long long
     LL a[1001];
     int main()
     {
         int T, n;
         scanf("%d", &T);
         while(T--)
         {
             scanf("%d", &n);
             for(int i =0; i<n; i++)
             {
                scanf("%lld", &a[i]);
                a[i] = a[i]*a[i];
             }
             sort(a, a+n);
             int num = 0;
             for(int i=0; i<n; i++)
                for(int j=i+1; j<n; j++)
                {
                    LL p = a[i] + a[j];
                    LL q = sqrt(p);
                    if(q*q!=p) continue;
                    for(int k=j+1; k<n; k++)
                    {
                        if(a[k] > p) break;
                        if(a[k] == p) num++;
                    }
                }
                cout<<num<<endl;
         }
         return 0;
     }
    
    
    <a
    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    Azure SQL Storage
    T-SQL quries
    映射盘符
    繁体及其输入法、乱码问题
    匈牙利命名法
    C++四种转换总结
    windows系统下进程间通信
    Qt 中文字符串问题
    PDB文件详解
    DbgView 无法开启Capture Kernel问题
  • 原文地址:https://www.cnblogs.com/6bing/p/3931244.html
Copyright © 2011-2022 走看看