2016-06-12 7 views
1

왜이 질문에서 시간 제한을 초과합니까? 링크 : http://www.spoj.com/problems/ENIGMATH/Spoj : ENIGMATH - 수학 함께하기

lcm은 두 숫자의 gcd를 사용하여 쉽게 계산할 수 있습니다. gcd euclid 알고리즘을 계산하는 데 사용됩니다.

#include<iostream> 
using namespace std; 
long long int gcd(long long int a,long long int b) 
{ 
    if(b==0) 
    return a; 

    else 
    return gcd(b,a%b); 
} 
int main() 
{ 
    long long int t,a,b,lcm,i=0; 
    cin>>t; 

    while(i<t) 
    { 
     cin>>a>>b; 
     if(a==b) 
     cout<<"1 1\n"; 

     else 
     { 
      lcm=(a*b)/gcd(a,b); 
      cout<<lcm/a<<" "<<lcm/b<<"\n"; 
     } 
} 
return 0; 
} 

답변

2

당신은 루프에서 i를 업데이트하지 않는, 그래서 당신은 음의 값 또는 t 제로를 입력하지 않으면 그것은 무한 루프에 실패합니다.

i<ti++<t 또는 원하는 다른 방법으로 변경하여 업데이트 해보십시오.

0

당신은이 방법을 시도 할 수 있습니다 ... 감사합니다.

#include<iostream> 
using namespace std; 
long long int gcd(long long int a,long long int b) 
{ 
    if(b==0) 
    return a; 

    else 
    return gcd(b,a%b); 
} 
int main() 
{ 
    long long int t,a,b,lcm,i=0; 
    cin>>t; 

    while(i<t) 
    { 
     cin>>a>>b; 
     if(a==b) 
     cout<<"1 1\n"; 

     else 
     { 
      lcm=(a*b)/gcd(a,b); 
      cout<<lcm/a<<" "<<lcm/b<<"\n"; 
     } 
    i += 1;//Here was mistook. 
} 
return 0; 
}