#include
using namespace std;
int main()
{
int n, a[50], i,j,num,max,count;
while (cin >> n)
{
if (n == 0)
break;
max = 0;
num = 1;
for (i = 0; i < n; i++)
{
cin >> a[i];
if (a[i] == 0) break;
if (a[i]>max) max = a[i];
num = num*a[i];
}
for (j = max; j <= num; j++)
{
count = 0;
for (i = 0; i < n; i++)
{
if (j%a[i] == 0)
count++;
}
if (count== n)
{
cout << j << endl;
break;
}
}
}
return 0;
}
ACM的题不都是有一个时限吗?就是规定你的程序运行时间不长于它。
Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
acm题目都有上面这样的运行时间与内存上限的,
TLE的原因一般是你的程序时间复杂度太高(刚做acm的可能会是写了个死循环),达不到题目的要求
你用了一个while里面有两层for循环,不看while的话时间复杂度就是n^2,也就可能acm里的2000MS,你再仔细算一下你的时间复杂度,碰到这种问题应该还是算法不够好,再想想别的办法
改善算法性能,缩短运行时间。