C++ 斯波吉:谜-玩数学

C++ 斯波吉:谜-玩数学,c++,algorithm,C++,Algorithm,为什么我在这个问题上超过了时间限制?链接: 借助两个数的gcd,lcm易于计算。计算gcd时,使用欧几里德算法 #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 in

为什么我在这个问题上超过了时间限制?链接:

借助两个数的gcd,lcm易于计算。计算gcd时,使用欧几里德算法

#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;
}
#包括
使用名称空间std;
长整型gcd(长整型a,长整型b)
{
如果(b==0)
返回a;
其他的
返回gcd(b,a%b);
}
int main()
{
长整型t,a,b,lcm,i=0;
cin>>t;
而(i>a>>b;
如果(a==b)

cout您没有在循环中更新
i
,因此它将进入无限循环,除非您在
t
中输入负值或零


尝试通过更改
i来更新它。您可以这样尝试……谢谢

#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;
}
#包括
使用名称空间std;
长整型gcd(长整型a,长整型b)
{
如果(b==0)
返回a;
其他的
返回gcd(b,a%b);
}
int main()
{
长整型t,a,b,lcm,i=0;
cin>>t;
而(i>a>>b;
如果(a==b)
库特