15 / 40
Oct 2017

Wolne języki mają problem :wink:

Moim zdaniem jeżeli zadanie ma prawidłową złożoność i daje poprawne odpowiedzi powinno być akceptowane. Chyba, że w zamyśle autor chce żeby użytkownik użył takiej a nie innej struktury (albo języka).

Po pierwsze zanim sam zaczniesz coś komentować to sprawdź źródło. Widziałem, że są 2 takie wątki, a w rzeczywistości 1 - dlaczego? Sprawdź sam swój link.
Po drugie - gdy dokleiłem się do tego to czytałem wcześniejsze testy i wychodziło, że jest dobrze (widocznie źle sprawdziłem ten drugi test), teraz dostałem od Mariusza jeszcze jeden test, który pozwolił mi na znalezienie błędu.
Zadanie - AC.
Nie mam więcej pytań.

to usuń link do kodu, bo zbyt bliski prawidłowego rozwiązania (choć nie popieram metody działania na stringach, bo można szybciej i bardziej elegancko)

Z punktu widzenia osoby rozwiazujacej zadanie jedynym kryterium oceny poprawnosci rozwiazania jest AC. Estetyka kodu, styl rozwiazania a nawet jego wywalanie sie dla danych innych niz w testach autora (tak zwane slabe testy) nie moga byc omowione na forum ani nigdzie indziej.

Temu uwazam ze wstawiony kod powinien z automatu dostac TLE jako rozwiazanie algorytmicznie bezmyslne - to zwykly brut i tyle.

Ale to i tak nic w porownaniu z tym co przechodzi obecnie w zadaniu dotyczacym generowania liczb pierwszych.

tyle, że brut w Czarodziejskie lusterko jest praktycznie nieodróżnialny w kryterium czasowym od poprawnego rozwiązania - większość czasu to operacje wejścia/wyjścia

W zadaniu na liczby pierwsze można by wymusić poprawne rozwiązanie, ale oczywiście kosztem ograniczenia rozwiązań jedynie do C/C++

Że nie są, nie znaczy że nie mogą. A szkoda. Kiedyś, często, przy podpowiadaniu, przy okazji komentowałem też błędy “stylistyczne” w kodzie pytającego, ale że do tanga trzeba dwojga, więc zaprzestałem. Szkoda mi mojego czasu i zdrowia, bo czasami zamiast wdzięczności było tylko obrażanie się, za taką [przecież konstruktywną, a nie złośliwą?] krytykę. Więc chyba masz rację, że większość osób [na pewno nie wszystkie] interesuje tylko uzyskanie AC i: “nie mam więcej pytań:wink:

PS
W tym zadaniu 2x long to o jeden bit za mało. Należy koniecznie użyć unsigned.

5 months later
linux/python
>>> bin(4294967296)
'0b100000000000000000000000000000000'
>>> bin(4294967297)
'0b100000000000000000000000000000001'
>>> bin(18446744073709551615)
'0b1111111111111111111111111111111111111111111111111111111111111111'
>>> bin(18446744073709551616)
'0b10000000000000000000000000000000000000000000000000000000000000000'
>>>

Test:

69788180
19192237

Twój out:

21117088
23803464

Poprawny out:

21117089
23803465

Po zmianie wyjścia na double program przechodzi powyższy test. Jeśli chodzi o wejście to 2^64-1 powinno się mieścić w zakresie unsigned long long int. Niestety pokazuje WA.

No i się mieści :wink:
Do tego zadania wystarczy w zupełności ten typ, a stosowanie typu zmiennoprzecinkowego [float, double] jest niekonieczne, a nawet jest to błąd. Także string jest tu zupełnie zbędny.

Może przyda Ci się ten link, --> C++ kruczki i sztuczki, sorry, został “nieco” zaśmiecony, więc więcej sztuczek pewnie tam już nie będzie.

To:

if(k1==18446744073709551615) cout << "18446744073709551616" << endl;

oczywiście jest błędne, zobacz na mój wcześniejszy post.

Funkcja pow, jest typu double i działa na takiego typu liczbach, co może powodować i powoduje błędy zaokrągleń - pisałem, że typy zmiennoprzecinkowe nie są tu dobre.

Napisz więc swoją własną funkcję pow2(), typu unsigned long long lub stablicuj wszystkie [tylko 64] wartości potęgi 2
[0] = 1
[1] = 2
[2] = 4

[31] = 214748364

[64] = ? :wink:

1 year later

Mam problem w zadaniu czarodziejskie lusterko z przekroczeniem limitu czasu na SPOJ-u, 1.próbowałem zrobić to zadanie na dwa sposoby przez konwersje z dec na bin, liczbe bin zapisałem do stringa i potem zrobiłem konwersje na dec. 2. wszystkie konwersje zrobilem na liczbach zapisanych w tablicach, czyli liczbe dec skonwertowana na bin zapisałem w tablicy , potem zrobiłem reverse i z tablicy zrobiłem konwersje na dec. Wyniki sie zgadzają ale limit czasu przekroczony :(. Ma ktoś pomysł jak można z tym sie uporać?

Zrobiłem podobnie jak w twoim punkcie 2, patrząc po czasie chyba nie najlepsze rozwiązanie ale nie było TLE.
Spróbuj bez reverse, jak dalej nie pójdzie to można jeszcze coś pokombinować żeby nie liczyć potęg dwójki (tylko trzeba się sporo napisać xD).