b557

輸入說明 :

第一行有一數字 T ,代表有幾組測試資料 (1<=T<= 50)

每組測試資料包含兩行

第一行有一數字 N ,代表有幾根木棒 (1<=N<=100)

第二行有N個數字 a_i 以空白隔開,代表木棒的長度(1<=a_i<=100)

輸出說明 :

對於每筆測試資料輸出一行,每行包含一個數字 x 代表可以組成幾種直角三角形。

對於每一組數字,做Cn取3的動作,然後最大的那個數之平方是不是另外兩數平方之和

#include <stdio.h>
#include <algorithm> 
using namespace std;
int main ()
{    

    int T;
    int N;
    int i,j,k;

    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&N);

        int  array[N];
        int triangle=0;


        for(i=0;i<N;i++)
            scanf("%d",&array[i]);

        sort(array,array+N);

        for(i=0;i<N-2;i++)
            for(j=i+1;j<N-1;j++)
                for(k=j+1;k<N;k++)
                {
                    int itemp=array[i]*array[i],
                        jtemp=array[j]*array[j],
                        ktemp=array[k]*array[k];

                    if(ktemp==itemp+jtemp)    
                        triangle+=1;
                }
        printf("%d\n",triangle);
    }
    return 0;
}