#include<iostream,>
#include<cmath.>
#include<math.h.>
using namespace std;
int f(int a) //调用函数判断整数位数
{
int x=0;
for (;;)
{
if (a / 10 < 1)
{
x++;
break;
}
a = a / 10;
x++;
}
return x;
}
int main()
{
int n;
cin >> n;
while (n–)
{
int m;
cin >> m;
int a, b, max = 0, min = 2147483647; //2147483647为int型范围最大值
for (int i = 0;i < m;i++)
{
cin >> a;
int u = f(a);int v = 0;int x = a;
for (int i = u - 1;i >= 0;i–) //逐个把数字从低位往高位看,形成m个整数,边输边存
{
v += (x % 10) * pow(10, i);
if (x / 10 >= 1)
{
x = x / 10;
}
else if (x / 10 < 1)
{
break;
}
}
b = v;
if (a > b)//找出2m个整数中的最大值和最小值
{
if (a > max)
{
max = a;
}
if (b < min)
{
min = b;
}
}
else
{
if (b > max)
{
max = b;
}
if (a < min)
{
min = a;
}
}
}
cout << max / min << endl;//最大值和最小值相除得最大商
}
return 0;
}
由于内存限制,此题应该不能够使用数组来解,否则会超内存
若无这么小的内存限制,可直接开数组存数字更为方便,最后逐个比较或排序获得最大最小值,从而求出最大商。