2017-10-13 27 views
-3

我已经编写了一个代码来查找数字的GCD和LCM,但每当我在codechef上提交它说超出了时间限制。如何成功提交?成功执行,但在代码上传时超出了时间限制

#include <iostream> 
using namespace std; 

int main() { 

int long long n1, n2, hcf,lcm,tc; 
cin>>tc; 
while(tc--){ 
cin >>n1>>n2; 
if (n2 > n1) { 
    int temp = n2; 
    n2 = n1; 
    n1 = temp; 
} 
for (int i = 1; i <= n2; ++i) { 
    if (n1 % i == 0 && n2 % i ==0) { 
     hcf = i; 
     lcm = (n1*n2)/hcf; 
    } 
} 
cout<<hcf<<" "<<lcm;  
} 
return 0; 
} 
+1

这是一个比赛,所以它看起来不是在精神上帮助你太多。但是,问题在于你的算法效率低下,需要比网站允许的时间更长(它们可能会用很大的数字进行测试)。在wikipedia中查找GCD算法,然后再试一次。 –

+1

由于您的代码有效,请尝试在[codereview.se]上发帖。 –

回答

0

如果n是一个非常大的数量的为(INT I = 1;我< = N2; ++ⅰ)将永远需要。 只需尝试运行以下简单的代码。

unsigned int n2 = 4294966296; 
for (unsigned int i = 1; i <= n2; ++i) 
{ 
    int a = i % 10; 
} 

std::cout<<"its done"; 

根据计算机的速度而定,这可能需要花费很长时间。

+0

非常感谢.. !! – omkarlanghe