joj 1868 Blocks 无敌的枚举法

joj 1868 Blocks 无敌的枚举法
第一次1.3秒,第二次0.1第三次,0.0秒
#include<stdio.h>
void func(int i)
{
int m,n,k,j;
int temp,vmax=4*i+2;
for(m=1;m<i;m++)
for(n=m;n<=i;n++)
{
j=m*n;//避免了三重循环
if(j>i)
break;//能省不少时间
if(i%j==0)//判断是否能整除
{
k=i/j;
temp=2*(k*m+k*n+j);
if(temp<vmax)
vmax=temp;
}
}
printf("%d\n",vmax);
}
int main()
{
int num,n;
scanf("%d",&num);
getchar();
while(num--)
{
scanf("%d",&n);
getchar();
func(n);
}
//system("PAUSE");
return   0;
}

你可能感兴趣的:(joj 1868 Blocks 无敌的枚举法)