2017-10-13 60 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