Cześć,
mam za zadania obliczyć NWD(x, a*x+b) dla podanych w wejściu liczb naturalnych a,b,x (1 ≤ x, a, b ≤ 10^15). Np. dla liczb 100 17 42 wynik to 2.
Mój kod daje poprawne dane, ale na uczelnianej sprawdzarce na 6 linii daje akceptem w pięciu liniach - w linii 2 jest wrong answer. Nie wiem za bardzo, gdzie jest ten błąd, więc może Wam się coś rzuci.
#include <iostream>
using namespace std;
unsigned long long nwd(unsigned long long x, unsigned long long b) {
unsigned long long pom;
while(b!=0)
{
pom = b;
b = x%b;
x = pom;
}
return x;
}
int main()
{
unsigned long long x,a,b;
cerr<<"Wprowadz liczbe x a b: ";
cin>>x>>a>>b;
cerr<<"Wynik: ";
cout<<nwd(x,a*x+b)<<endl;
return 0;
}