代码应该是没问题的,但是提交的时候说我超时。。
#include <stdio.h>
int main()
{
int x, n, t, s, i;
scanf("%d", &n);
printf("%d\n", n);
while (n--)
{
s = 0;
scanf("%d\n", &x);
for (i = 1; i < x; i++)
{
if (x % i == 0)
s = s + i;
}
if (s == x)
printf("%d is perfect\n", x);
else
printf("%d is not perfect\n", x);
}
return 0;
}
你这代码时间复杂度不对啊
你这代码的时间复杂度为 $O(NX)$,达到了 $10^{10}$ 的计算量,而评测机一秒只能做 $10^8$ 左右次运算
要优化到 $O(N\sqrt X)$
。。。这啥,等我了解了解先,我刚学c俩月还不太懂。。。
找了半天不知道哪里错了,用if又写的我头皮发麻
数学不好太难受了