Dzień Dobry, proszę o podpowiedź - dostaję komunikat "przekroczono limit czasu" Nie mam zupełnie pomysłu gdzie szukać i co zmienić. zadanie :https://pl.spoj.com/problems/FR_12_12/ mój kod #include using namespace std; int main() { int d = 0,licznik=0,i=0,j=0; long int wierz = 0; cin >> d; while (d–) { cin >> wierz; for (i = 0; i <= wierz; i++) { for (j = 0; j <= wierz; j++) { if (((i % 4) == 0) && ((j % 3) == 0)) { if (i + j == wierz) { licznik++; } ; } } } cout << licznik << endl; licznik = 0; } return 0;
}
Trzy “pełne” zagnieźdzone pętle:
while (d–) // ... for (i = 0; i <= wierz; i++) // ... for (j = 0; j <= wierz; j++) // ...
To w tym zadaniu dużo za dużo, a dokładniej o co najmniej dwie, za dużo.
Zwiększenie inkrementacji zamiast i++, do i=i + 4 oraz odpowiednio do j=j+3 nie pomogło - ten sam komunikat. Jeżeli nie na siłę to pewnie nie trzeba sprawdzać wszystkich możliwości a znaleźć więcej prawideł które opisuje prawidłową odpowiedź i to opisać if’ami . Odezwę się jak coś wymyślę - na razie bardzo dziękuję za podpowiedzi.
Jedna pętla 8-)) naprawdę wystarczyła https://pl.spoj.com/submit/FR_12_12/id=27704027
Czy da się to jakoś przyspieszyć?
cout<<tab[t%12]+t/12<<'\n';
PS. oczywiście używam
std::ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);