活生生把一道枚举题做成算法题
有时候不用太较真数据范围还可以接受的话就枚举试试
如果TLE
再考虑方法的问题
有些一眼看出来枚举就会TLE 的就不要浪费时间了
题目大意将一个数分解成abc的形式,要求c-a尽可能小并且a尽可能小
那就让a从最小的能整除的开始呗,开一个cmp变量用来更新c-a的值
如果变小就更新,并记录abc的值
好了思路就这样康康代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t,n,a,b,c,cmp;
scanf("%d",&t);
while(t--)
{
int cmp=99999;
scanf("%d",&n);
for(int i=2;i*i<n;i++)
{
if(n%i==0)
{
int m=n/i;
for(int j=i;j*j<=m;j++)
{
if(m%j==0)
{
if(m/j-i<cmp)
{
a=i;
b=j;
c=m/j;
cmp=c-a;
}
}
}
}
}
if(cmp==99999)
printf("No solution\n");
else
printf("%d=%d*%d*%d\n",n,a,b,c);
}
return 0;
}
这个99999一开始我写的999wa了两次
吐血后来看见数据范围改的
其实可以用n