题目
将1,2,······,9共9个数排成下列形态的三角形。
以下句号是方便展现效果,请忽略
a
b。。c
d。。。。e
f。。g。h。。i
其中:a~i分别表示1,2,······,9中的一个数字,并要求同时满足下列条件:
(1)a<f<i;
(2)b<d, g<h, c<e
(3)a+b+d+f=f+g+h+i=i+e+c+a=P
程序要求:
根据输入的边长之和P,输出所有满足上述条件的三角形的个数。
输入
每个测试文件只包含一组测试数据,每组输入一个整数P,表示边长之和。
输出
对于每组输入数据,输出所有满足上述条件的三角形的个数。
如果无解,则输出"Not exist"(引号不输出)。
示例
代码
#include<stdio.h>
int main()
{
int k[9]= {1,2,3,4,5,6,7,8,9};
int a,b,c,d,e,f,g,h,i,j,l=0,m,n,o,p,q,r,s,t,u,P;
scanf("%d",&P);
for(j=0; j<9; j++)
{
a=k[j];
for(m=0; m<9; m++)
if(a!=k[m])
{
b=k[m];
for(n=0; n<9; n++)
if(k[n]!=a&&k[n]!=b)
{
c=k[n];
for(o=0; o<9; o++)
if(k[o]!=a&&k[o]!=b&&k[o]!=c)
{
d=k[o];
for(p=0; p<9; p++)
if(k[p]!=a&&k[p]!=b&&k[p]!=c&&k[p]!=d)
{
e=k[p];
for(q=0; q<9; q++)
if(k[q]!=a&&k[q]!=b&&k[q]!=c&&k[q]!=d&&k[q]!=e)
{
f=k[q];
for(r=0; r<9; r++)
if(k[r]!=a&&k[r]!=b&&k[r]!=c&&k[r]!=d&&k[r]!=e&&k[r]!=f)
{
g=k[r];
for(s=0; s<9; s++)
if(k[s]!=a&&k[s]!=b&&k[s]!=c&&k[s]!=d&&k[s]!=e&&k[s]!=f&&k[s]!=g)
{
h=k[s];
for(t=0; t<9; t++)
if(k[t]!=a&&k[t]!=b&&k[t]!=c&&k[t]!=d&&k[t]!=e&&k[t]!=f&&k[t]!=g&&k[t]!=h)
{
i=k[t];
if(a<f&&f<i&&b<d&&g<h&&c<e&&a+b+d+f==f+g+h+i&&f+g+h+i==i+e+c+a&&i+e+c+a==P)
l=l+1;
}
}
}
}
}
}
}
}
}
if(l==0)
printf("Not exist");
else
printf("%d",l);
return 0;
}