具有正确限制的无限循环
infinite for loop with correct limits
你能解释一下为什么这段代码会进入无限循环吗?我找不到错误。它在 n 和 m 的小值下工作正常。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n=1000000, m=1000000;
long long k = 1;
for (long long i = 0; i < n; i++)
{
for (long long j = 0; j < m; j++)
{
k++;
}
}
cout << k;
return 0;
}
它不是无限的,但是 k++
操作必须 运行 1,000,000 * 1,000,000 = 1,000,000,000,000
次。它不是无限的,但它需要太长时间。这正是它适用于较小的 n 和 m 值的原因。
这是一个典型的优化目标。
- 使用 -Ofast 构建。
g++ t_duration.cpp -Ofast -std=c++11 -o a_fast
#time ./a_fast
1000000000001
real 0m0.002s
user 0m0.000s
sys 0m0.002s
几乎没有时间return输出。
- 使用 -O1 构建。
g++ t_duration.cpp -O1 -std=c++11 -o a_1
#./a_1
419774 ms
完成计算大约需要 420 秒。
当我 运行 这段代码时,我得到了这个作为我的输出
1000000000001
参考:我在代码 chef IDE(https://www.codechef.com/ide) 中有 运行 这段代码
你可以试试这个 IDE 一次,我猜你的 IDE 有问题
或者可能是其他问题
我花了不到 20 秒的时间 运行 这个(时钟)
但是当我在 CODE::BLOCKS 中放入相同的代码时它需要很长时间(就像你说的无限循环 运行ning)并且原因很简单它应该做 1000000000000 运行小号
然而这给我带来了一个问题,code chef IDE 和 code::blocks compiler 之间有什么区别
(从你的问题中得到一个新问题 (Difference Between Code-Chef IDE and Code::Blocks))
最后答案是用code chef试一下IDE就这样了,这段代码运行s fast there
希望对您有所帮助
你能解释一下为什么这段代码会进入无限循环吗?我找不到错误。它在 n 和 m 的小值下工作正常。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n=1000000, m=1000000;
long long k = 1;
for (long long i = 0; i < n; i++)
{
for (long long j = 0; j < m; j++)
{
k++;
}
}
cout << k;
return 0;
}
它不是无限的,但是 k++
操作必须 运行 1,000,000 * 1,000,000 = 1,000,000,000,000
次。它不是无限的,但它需要太长时间。这正是它适用于较小的 n 和 m 值的原因。
这是一个典型的优化目标。
- 使用 -Ofast 构建。
g++ t_duration.cpp -Ofast -std=c++11 -o a_fast
#time ./a_fast
1000000000001
real 0m0.002s
user 0m0.000s
sys 0m0.002s
几乎没有时间return输出。
- 使用 -O1 构建。
g++ t_duration.cpp -O1 -std=c++11 -o a_1
#./a_1
419774 ms
完成计算大约需要 420 秒。
当我 运行 这段代码时,我得到了这个作为我的输出
1000000000001
参考:我在代码 chef IDE(https://www.codechef.com/ide) 中有 运行 这段代码 你可以试试这个 IDE 一次,我猜你的 IDE 有问题 或者可能是其他问题
我花了不到 20 秒的时间 运行 这个(时钟)
但是当我在 CODE::BLOCKS 中放入相同的代码时它需要很长时间(就像你说的无限循环 运行ning)并且原因很简单它应该做 1000000000000 运行小号
然而这给我带来了一个问题,code chef IDE 和 code::blocks compiler 之间有什么区别 (从你的问题中得到一个新问题 (Difference Between Code-Chef IDE and Code::Blocks))
最后答案是用code chef试一下IDE就这样了,这段代码运行s fast there
希望对您有所帮助