【发布时间】:2017-07-13 11:24:37
【问题描述】:
// author- squeamishossifrage
#include <stdio.h>
int main() {
int k, t, A, N, B, max, num_tests;
scanf("%d", &num_tests);
while (num_tests--) {
scanf("%d %d", &N, &B);
A = 1;
k = N / B;
for (k=N/B,max=0; k>0; k--) {
t = (N-k*B) * k;
if (t > max) max = t;
}
printf("%d\n", max);
}
return 0;
}
上面的代码(取自this answer)似乎需要一秒钟多一点,但约束是在一秒钟内执行。我们如何在不使用多线程的情况下提高这种代码的速度(我不知道如何使用它们)?
【问题讨论】:
-
不是说这会有帮助,但为什么是
k = N / B;,然后是for (k=N/B,...? -
您很可能需要更高效的算法。 (如果你从一个低效的算法开始,你做了多少代码优化都没关系 - 代码仍然很慢。)
-
如果你告诉我们算法应该做什么会更容易吗?
-
这可能应该在 Code Review 上问,而不是 SO。
-
闻起来像 Project Euler 挑战。
标签: c performance optimization