小厚的三角形
Time Limit: 1000MS Memory limit: 65536K
题目描述
一天,小厚的好朋友给了他n个面积为1的正三角形。小厚比较喜欢规整的形状,所以他想要用这些正三角形拼成一个正多边形。要求恰好拼为一个正多边形,不可裁剪,多边形内部也不能有空隙。小厚想知道他能拼出的最大的一个正多边形面积为多少。正三角形可以有剩余。
输入
多组输入,输入到文件结束(EOF)
每组输入,输入一个正整数n(1 <= n <= 1000)
每组输入,输入一个正整数n(1 <= n <= 1000)
输出
对于每组输入,输出一个正整数,表示拼出的最大正多边形的面积。
示例输入
1 2 6
示例输出
1 1 6
提示
对于第二组,两个正三角形不能完整拼出一个正多边形。因此最大面积为一个正三角形的面积 = 1。
PS:二维平面内各边相等,各角也相等的多边形叫做正多边形
PS:二维平面内各边相等,各角也相等的多边形叫做正多边形
#include <string.h>
#include <stdio.h>
int a[1000];
int b[1000];
int main()
{
int n,m,i,j;
for(i = 1; i < 120; i++)
{
b[i] = i*i;
}
a[1] = 6;
for(i = 2; i < 120; i++)
{
a[i] = b[i]*6;
}
while(~scanf("%d",&n))
{
for(i = 1; i < 120; i++)
{
if((a[i] <= n)&&(a[i+1] > n))
{
break;
}
}
for(j = 1; j < 120; j++)
{
if((b[j] <= n)&&(b[j+1] > n))
{
break;
}
}
if(a[i] > b[j]) printf("%d\n",a[i]);
else printf("%d\n",b[j]);
}
return 0;
}
#include <stdio.h>
int a[1000];
int b[1000];
int main()
{
int n,m,i,j;
for(i = 1; i < 120; i++)
{
b[i] = i*i;
}
a[1] = 6;
for(i = 2; i < 120; i++)
{
a[i] = b[i]*6;
}
while(~scanf("%d",&n))
{
for(i = 1; i < 120; i++)
{
if((a[i] <= n)&&(a[i+1] > n))
{
break;
}
}
for(j = 1; j < 120; j++)
{
if((b[j] <= n)&&(b[j+1] > n))
{
break;
}
}
if(a[i] > b[j]) printf("%d\n",a[i]);
else printf("%d\n",b[j]);
}
return 0;
}
这一题的方法是你要找出组成的正三角形与正六边形,
三角形就是上一个三角形的四倍
而六边形则是三角形的六倍就取出来了,,
代码菜鸟,如有错误,请多包涵!!