Dzień dobry
Mam problem z poniższym zadaniem. Po wrzuceniu rozwiązania do sprawdzarki "themis" otrzymuje 5 sprawdzeń pozytywnych i 4 negatywne.
Zablokowałem się już i zastanawiam się nad napisaniem kodu od nowa w inny sposób. Może jest coś co można tu poprawić:
Treść zadania:
Napisz program, który oblicza najmniejszą wspólną wielokrotność ciągu liczb naturalnych.
Wejście:
W pierwszy wierszy znajduje się liczba naturalna n, nie większa od 100000.
W drugim wierszu znajduje się ciąg n liczb naturalnych, nie większych od 10^15.
Wyjście: Liczba równa najmniejszej wspólnej wielokrotności wszystkich liczb z ciągu.Przykład
Dla danych wejściowych:
4
21 224 84 1050
poprawną odpowiedzią jest
16800
Mój kod:
#include <iostream>
using namespace std;
unsigned long long nwd(unsigned long long a, unsigned long long b)
{
unsigned long long pomocnicza;
while (b != 0)
{
pomocnicza = a % b;
a = b;
b = pomocnicza;
}
return a;
}
unsigned long long nww(unsigned long long a, unsigned long long b)
{
unsigned long long wynik;
wynik = a*b / nwd(a,b);
return wynik;
}
unsigned long long nwwciagu(unsigned long long* tab, unsigned long long ile)
{
unsigned long long nww2 = tab[0];
for (unsigned long long i = 1; i < ile; i++)
{
nww2 = nww(nww2,tab[i]);
}
return nww2;
}
int main ()
{
unsigned long long ile;
cerr << "Ile liczb jest w ciagu: ";
cin >> ile;
unsigned long long* tab = new unsigned long long[ile];
cerr <<"Podaj "<<ile<<" liczby: "<< endl;
for (unsigned long long i = 0; i < ile; i++)
{
cin >> tab[i];
}
cout << nwwciagu(tab, ile) << endl;
return 0;
}