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