Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!
2016-09-12    Programowanie, Spoj, C++, Algorytmy, Zadania

Dziś po raz kolejny wybiorę 5 ciekawszych zadań i pokażę mój sposób na ich rozwiązanie.
W pierwszej kolejności ciąg należy posortować, a następnie sprawdzić liniowo wystąpienie kolejnych liczb. Należy również zaimplementować algorytm dużych liczb, ponieważ liczby wejściowe nie mieszczą się w standardowych typach.
Oczywistością jest, że dla każdego przypadku pierwszą liczbą wyjściową będzie zawsze n. Kolejne wysokości można obliczyć poprzez różnicę stosów mniejszych od ilości wszystkich stosów.
Należy skorzystać ze wzoru na obwód i informacji o polu. Dzięki czemu uzyskujemy prostą funkcję do zoptymalizowania. Po dokonaniu obliczeń wychodzi, że szukany prostokąt musi być jak najbardziej zbliżony do kwadratu.
Klasyczne zadanie na wykorzystanie przeszukiwania binarnego. Należy tylko pamiętać, aby przeszukiwanie odbywało się w obie strony.
Najsprytniejszym rozwiązaniem jest, aby od razu skorzystać z cech podzielności przez 15. Wiadomo, że liczba ta musi mieć ostatnią cyfrę 0 lub 5. Następnie wystarczyć sprawdzić maksymalnie już tylko 3 liczby, aby dowiedzieć się która jest podzielna przez 15. Taki algorytm pozwoli nam uzyskać czas 0.00.
Komentarze:
2016-09-29 20:06:29 = BPR13
{
Witam,

znalazłem Twojego bloga przez serwis SPOJ i tak Cię już 'śledzę' od jakiegoś czasu :) Mam problem z tym zadaniem nr 5. Jest szansa, że wrzuciłbyś swój kod (np. na ideone) w odpowiedzi na mój komentarz? :) Konkretnie nie wiem, a próbowałem już na kilka sposobów, jak przemieszczać się po stringu żeby zmieniać cyfry, dlatego chętnie popatrzyłbym co robię źle. Dla wiarygodności wrzucę swój kod, chociaż to element rozpaczy :/

http://ideone.com/OqNpN3
}
2016-09-30 00:56:55 = Szewy
{
Witam,
Służę pomocą, ale niestety nie podam gotowego rozwiązania z oczywistych powodów :)

Błąd w Twoim kodzie to dekrementacja liczby, musisz to w bardziej logiczny sposób napisać. Drugi problem to cout, nie może on mieć żadnego warunku, bo przecież dla każdego przypadku musimy dać jakąś odpowiedź.

Dekrementacja w pierwszej kolejności polega na zmniejszeniu cyfry jedności, a jeżeli ta cyfra była zerem to musisz także zmniejszyć cyfrę dziesiątek o jedną mniejszą. I tutaj też trzeba sobie zadać pytanie czy ona nie jest też przypadkiem 0, wówczas cyfrę dziesiątek zamieniamy na 9 i zmniejszamy analogicznie cyfrę setek itd.

Mam nadzieję, że trochę Ci naświetliłem jak to napisać, a jak będziesz miał ciągle problemy to śmiało pisz ;)
}
Dodaj komentarz:
Nick:
URL(opcjonalnie):