# Problem C: Square

Problem C: Square

## Problem C: Square

Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?

The first line of input contains N, the number of test cases. Each test case begins with an integer 4 <= M <= 20, the number of sticks. M integers follow; each gives the length of a stick - an integer between 1 and 10,000.

For each case, output a line containing "yes" if is is possible to form a square; otherwise output "no".

``````3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
``````

``````yes
no
yes
``````

``````#include <stdio.h>

int C,N,i,j,k,area,best;

main(){
scanf("%d",&C);
while (C--) {
scanf("%d",&N);
best = 1000*1000*1000;
for (i=1;i*i*i<=N;i++) {
for (j=i;i*j*j<=N;j++) {
if (N%(i*j)) continue;
k = N/(i*j);
area = 2*i*j + 2*i*k + 2*j*k;
if (area < best) best = area;
}
}
printf("%d\n",best);
}
}
``````

``````#include <stdio.h>

int C,N,i,j,k,area,best;

main(){
scanf("%d",&C);
while (C--) {
scanf("%d",&N);
best = 1000*1000*1000;
for (i=1;i*i*i<=N;i++) {
for (j=i;i*j*j<=N;j++) {
if (N%(i*j)) continue;
k = N/(i*j);
area = 2*i*j + 2*i*k + 2*j*k;
if (area < best) best = area;
}
}
printf("%d\n",best);
}
}
``````