【发布时间】:2019-03-31 21:22:12
【问题描述】:
1<T<10 (where T is number of test cases)
1<N<1000
我们必须优化这段代码。
我尝试将小于N 的所有数字的因子从1 存储到N^2。但这仍然给了TLE
int count = 0;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
for (int k = 1; k <= N; k++)
{
if ((i * j) % k == 0)
count++;
}
}
}
return count;
所以我猜它可能应该在 O(N^2) 中运行
【问题讨论】:
-
是什么语言?请为其添加标签。
-
你能试着在这里找到一个与手头的一般问题相匹配的标题吗?
-
您可以通过按顺序写出调用使其成为 O(1): if ((1 * 1) % 1 == 0) count++;如果 ((2 * 1) % 1 == 0) 计数++; ...等
-
这似乎是一个编程竞赛的问题。请提供原始问题陈述的链接,并确保它不是正在进行的比赛的一部分,因为这会被视为作弊。
-
所以,乘法是对称的,
i*j == j*i,它立即将时间减半。
标签: c++ optimization