题目描述
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("%dn",best);
}
}
解析
暂无