我已经编写了一个代码来查找数字的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;
}
答案 0 :(得分:0)
如果n是一个非常大的数字,你的 for(int i = 1; i&lt; = n2; ++ i)将永远存在。 试着按照简单的代码运行。
unsigned int n2 = 4294966296;
for (unsigned int i = 1; i <= n2; ++i)
{
int a = i % 10;
}
std::cout<<"its done";
根据计算机的速度,可能需要永久。