Witajcie !
Ćwiczę sobie na tym SPOJu i mam zagwoztkę. Obecnie robię zadanie: http://pl.spoj.com/problems/EUCGAME/ .
Mój kod wygląda tak:
#include <iostream>
using namespace std;
bool f_EndRound(int a, int b){
return (a == 0 || b == 0 || a == b);
}
int f_StartRound(int a, int b){
while(!f_EndRound(a, b))
{
if(a > b)
a -= b;
else
if(b > a)
b -= a;
}
return a+b;
}
int main()
{
int t;
for(cin>>t; t>0; --t)
{
int a, b;
cin >> a >> b;
cout << f_StartRound(a, b) << endl;
}
return 0;
}
Niestety dla 1 z 3 przypadków przekraczam czas wykonania 1.01s/1s. Próbowałem funkcje f_EndRound() wepchnąć bezpośrednio do pętli while, bez zmian. Macie pomysł?
#include <iostream>
using namespace std;
int f_StartRound(int a, int b){
while(a != 0 && b != 0 && a != b)
{
if(a > b)
a -= b;
else
if(b > a)
b -= a;
}
return a+b;
}
int main()
{
int t;
for(cin>>t; t>0; --t)
{
int a, b;
cin >> a >> b;
cout << f_StartRound(a, b) << endl;
}
return 0;
}