Dodatkowo:
1) Tak nie deklaruje się tablic o zmiennym rozmiarze:
int a[t], b[t];
Powinienem zrobić int *a, *b; potem wczytać cin-em t, i utworzyć tablice za pomocą a, b = new int [t]; ?
Wcześniej tak zrobiłem, ale kompilator nie odpowiadał, a nie chciałem bawić się w debugowanie.
Nie rozumiem też czemu "algorytm błędnie zakłada, że jedna z liczb jest wielokrotnością drugiej", właśnie sprawdziłem wyniki dla danych niebędących nawzajem wielokrotnościami, i jest poprawny wynik.
Jakie są kryteria punktacji? Pierwszy raz używam SPOJ-a, i nie jestem obyty z sędzią - dlatego każdorazowo jak rozwiązuje zadanie, używam tablic, nie sprawdzałem czy można inaczej. Dzięki za wskazówki, ale nadal nie wiem jak rozwiązać zadanie. Może źle zrozumiałem grę 
(Jeśli chodzi o przykłady, to program wyrzuca inny wynik tylko w ostatnim przykładzie - a=9, b=6, cout - 12, ale to chyba dobrze
)