Pomocy! :) Pisze program, który wczyta nominały dostępnych monet i sprawdzi, czy używając dowolnej liczby monet podanych nominałów, da się wydać kwotę S. W pierwszej linijce wejścia znajduje się liczba różnych nominałów n (1 ≤ n ≤ 1000). W drugiej linii znajdują się liczby 1 ≤ s[i] ≤ 1000. Liczba s[i] oznacza wartość i-tej monety. W ostatniej linii znajduję się kwota do wydania S (0 ≤ S ≤ 10000). Program ma napisać TAK, jeśli wydanie kwoty S jest możliwe, lub słowo NIE, jeśli wydanie kwoty S nie jest możliwe.
Napisałem taki kod
#include <iostream>
using namespace std;
int main()
{
int n, S, S1, i,p;
cin >> n; // liczba dostępnych nominałów
int *s= new int [n];
for (i=0; i<n; ++i)
cin >> s[i]; // wpisuje wartości nominałów
cin >> S; // podaje resztę do wydania
for (i=0; i<n; ++i)
{
if (S ==0) {break;}
else if (S >= s[i]) //sprawdzam czy mozna wydac danym nominalem
{
p=S / s[i]; //ile razy wydac dany nominal
S=S-(s[i]*p); //zmniejszam reszte o wydany nominal
}
}
S1 = S;
if (S1!=0) {
cout << "NIE"; } // jeśli reszta na koniec różna od zera, nie udało sie wydać reszty
else {
cout <<"TAK";} // jeśli reszta na koniec równa zeru reszta została wydana
delete [] s;
return 0;
}
program nawet sie kompiluje i dla testowych wyników podaje poprawnie TAK lub NIE, ale w sprawdzaczce kilku testów nie przechodzi, dłubie w tym i nie mam już pomysłu co jest nie tak, macie jakiś pomysł, o czym mogłem zapomnieć lub co w nim jest źle? Z góry dzięki za sugestie :)