Skocz do zawartości

Malwin

Użytkownik
  • Liczba zawartości

    189
  • Rejestracja

  • Ostatnia wizyta

Posty dodane przez Malwin

  1. Jest wiele sposobów na to. Zależy co wolisz i jak podoba ci się dane rozwiązanie. Można tworzyć linki symboliczne pod linuksem polecenie ln -s.

     

    Wrzucasz 1_foto.jpg

    ln -s 1_foto.jpg azbycx12345.jpg

    w kodzie wykorzystujesz azbycx12345.jpg

    oba pliki wskazują na ten sam plik, ale nie zajmują dwa razy tyle miejsca.

     

    Drugie rozwiązanie zawsze w bazie możesz trzymać oryginalną nazwę, a na potrzeby maskowania zrobić rename'a na pliku i korzystać z nowej nazwy.

    • Popieram 1
  2. Ale to cmd to odpalasz na kompie więc będzie wyświetlane IP komputera, a nie router... Ty chcesz się dostać na routera, a nie na swój komputer więc trzeba wpisać IP routera. W tym wypadku ustawić wspólną podsieć to zmienić tymczasowo IP i maskę w komputerze np. na 192.168.0.2/24 (notacja ze ukośnikiem oznacza to to samo co 192.168.0.2 i maska 255.255.255.0)  i wpisać w przeglądarce adres 192.168.0.1.

  3. Router to nie twój komputer więc ma inne ip niż komp :). Wpisanie ip swojego komputera nic nie da. Należy wpisać IP routera, które albo jest domyśle i z reguły jest do sprawdzenia w manualu lub naklejce na urządzeniu albo ustawione inne. Jeżeli ustawione inne i się go nie pamięta to zrobić reset urządzenia do ustawień fabrycznych.

     

    Dodatkowo trzeba wiedzieć, że jeżeli router i komputer nie są w tej samej podsieci to nie wejdziesz w jego menu konfiguracyjne.

     

    Pozdrawiam :)

  4. Zależy od frameworka. W C# też się chyba tak da, ale używając winforms, a nie WPF chociaż głowy nie dam. W WPF na pewno się nie da, bo praktycznie w każdej kontrolce itp początkowo sprawdzane jest z jakiego wątku została wywołana. Jeśli inny wątek niż gui to rzuca wyjątkiem właśnie. Chociaż używanie wcale to tak nie utrudnia sprawy. Dalej wywołanie operacji na jakimś elemencie gui to jedna linia, tyle, że używa się dispatchera do jej wywołania.

  5. Pierwsze zadanie opiera się na tym, że losujesz parę liczb z przedziału <0,1>. Jest to więc punkt i sprawdzasz czy dla pierwsza wartość podniesiona do kwadratu jest mniejsza lub równa drugiej wartości. Potwarzasz to duża ilość razy, im większa tym wiarygodniejsze wyniki, ale bez przesady, żeby to nie liczyło zbyt długo. Oczywiście w trakcie zliczasz ile punktów wylosowanych spełniło warunek, a ile nie. Korzystając z faktu, że cały obszar to kwadrat 1x1 to jego pole jest równe 1. Jeśli wiesz ile punktów wylosowanych spełnia warunek to wiesz jaka część obszaru należy do funkcji x^2 w przedziale <0, 1>.

     

    Edit : Dodatkowo jakbyś użył funkcji szukaj znalazłbyś na forum gotowy kod do pierwszego zadania napisy przeze mnie.

  6. Głupich nie ma xD. Ludzie tutaj są pomocni, ale tylko gdy ktoś sam stara rozwiązać się problem i ma trudności z jakimś fragmentem zadania.

     

    Jak chcesz gotowe to najlepiej jak sobie od kolegi z klasy weźmiesz, a nie tu takie coś wypisujesz.

  7. Niemożliwe odnosiło się do 1 sekundy, a nie do otrzymania wyników w rozsądnym czasie. Co nie zmienia faktu, żeby działało w 3 sekundy dla pesymistycznych danych też się nie da. Dodatkowo takie ograniczenie czasowe jest lekko bez sensu, pomijając już wartość czy to 3s czy 300s, bo dla różnych komputerów jest wartości mogą sie znacznie różnić.

  8. OK. Na tej drugiej stronie faktycznie limit 32MB, co jednak nie stanowi problemu bo jest to badzo dużo pamięci. Dużo obliczeń i porównań można robić na tych samych danych i w miejscu. Ale dalej nie widzę ogarniczenia czasowego, więc nie wiem skąd niektórzy wytrzasneli czas 1s. Pomijając, przypadek dla maksymalnego n = 1 000 000 i gdzie dla każdej stacji by sie dało zrobić kółko bo jest więcej paliwa niż wymaga droga to na zwykłym komputerze jest to niemożliwe :)

  9.  

    Rano zrobiłem działającą (100/100) implementację, więc mogę teraz coś więcej napisać.

    Tak jak pisałem sprawdzenie wszystkich możliwych podróży nie zmieści się w czasie (moje to O(nlogn)). Musisz to zrobić sprytniej, dobierać punkty startowe w odpowiedniej kolejności i opierać się na wcześniejszych wynikach, żeby nie musieć za każdym razem iterować po całym okręgu.

     

    Powodzenia :)

     

     

    Tylko po co optymalizować jak nie ma o tym mowy w zadaniu, chyba że umyka mi ten fragment :)

  10. Ja nie będę pisał gotowca tym bardziej do zadań tego typu. To są zadania, które mają na celu nauczenie myślenia i algorytmów. Jeśli chcesz gotowca to tego jest na pęczki w google'ach.

     

    Nie wiem co w tym trudnego pętle for, tablica, oraz wykorzystanie funkcji pow lub przesunięcia bitowego do potęgowania. Ja ze swej strony służyłem dobrą radą, wytłumaczeniem i zrozumieniem samego zadania.

  11. A przedział <a,b> to nie są zwykłe liczby? Ja to widzę tak: definiuje przedział, znajduję w nim liczby pierwsze p, a potem liczby Mersenne'a. To moja wizja ale kompletnie nie wiem jak to napisać.

     

    Jak dla mnie z pierwszego posta jasno wynika, że z przedziału <a,b> znaleźć liczby Mersenne'a. Przykład łopatologiczny.

     

    Masz przedział <1,50> i z niego znaleźć liczby Mersenne'a :

    Algorytmem sita znajduje liczby pierwsze z ww. przedziału 2,3,5,7,11,...,47

    Kolejno podstawiam te liczby pierwsze do 2^p - 1 i sprawdzam czy wynik jest z przedziału a,b.

    Jeśli jest z tego przedziału to zapamiętuje + jak jest więszky od b to kończę.

     

    Jest to nie optymalne, ale działa bo widzisz, że znajdujesz dużo liczb pierwszych, a defakto z tego tylko kilka pierwszych pasuje.

  12. Jak je wyznaczysz bez liczb pierwszych. Liczba Mersenne'a to 2^p - 1 gdzie p jest właśnie liczbą pierwsza. Więc nie możesz sobie za p podstawiać kolejnych liczb naturalnych 1,2,3,4,5 itd tylko muszą to być liczby pierwsze 2,3,5 itd.

     

    Gdyby przedział <a,b> dotyczył zmiennej p to prosta sprawa. Masz przedział a,b wyznaczasz z niego liczby pierwsze i wyznaczone liczby podstawiasz do wzoru p^2 - 1. Ale neistety tutaj przedział a,b to już same liczby Mersenne'a nie p. Więc jakbyś to chciał inaczej zrobić niż zaproponowałem? Wyznaczał po kolei liczby Mersenne'a sprawdzał czy i sprawdzał które mieszczą się w przedziale? Dla przedziału, który zaczyna się od wysokiej liczby było by to przecież strasznie nieoptymalne, aczkolwiek by działało...

     

    Taka rada :

     

    1) Zrozumieć zadanie

    2) Porafić rozwiązać je na kartce

    3) Dopiero brać się za jakąkolwiek implementacje

    4) Ewentualne poprawki ( często się zdarza, że gdzieś zamiast >= jest samo > itp)

     

    Jednak jak chcesz, żeby to tylko działało to :

     

    W pętli liczysz 2^p-1 dla kolejnych liczb pierwszych zaczynając od 2. Algorytm na liczby pierwsze znajdziesz na wiki chociażby używając sita. Dla każdej liczby Mersenne'a sprawdzasz czy jest z przedziału a,b jeśli tak zapamiętujesz w tablicy. Jak liczba Mersenne'a jest większa niż b to kończysz. W tablicy wtedy masz wszystkie liczby Mersenne'a z przedziału a,b.

     

    Co do wyznaczenia n-tej liczby Mersenne'a to wystarczy zauważyć, że n-ta liczbę można obliczyć mając n-tą liczbę pierwszą.

     

    Tak więc 5-ta liczba Mersenne'a to 2^11 - 1 bo 11 to 5-ta liczba pierwsza : 2, 3, 5, 7, 11

  13. Najwięszkym problemem dla Ciebie będzie pewnie rozwiązanie równań. Dlatego podpowiedź :

     

    Logartym o podstawie a z b to to samo co logartym o podstawie c z b przez logartym o podstawie c z a. No chyba, że możesz użyć jakieś zewnętrznej bilbioteki do c, gdzie bez problemu można liczyć logartym z liczb o podstanej postawie. Bo w bibliotece standardowej jest chyba tylko o podstawie 10 i e. Dlatego podpowiedź powinna ułatwić zadanie.

  14. Zadanie banalne :

     

    1) Najpierw rozwiązujesz dwa równania postaci 2^p - 1 = a oraz 2^p - 1 = b. To pomoże określić przedział, z których trzeba wybrać liczby pierwsze. (Oczywiście wynikiem tych równań możę być liczba rzeczywista wtedy trzeba odpowiednio zaokrąglić). Mając ten przedział znajdujesz w nim liczby pierwsze. Mając liczby pierwsze podstawiając do 2^p -1 wyliczysz kolejne liczby Mersenne'a

  15. Zrezygnuj z Dev-C++ - jest to na chwilę obecną jeden z najgorszych IDE ( w dodatku praktycznie nie wykorzystuje się go w firmach). Zainstaluj Code::Blocks, albo (najlepsza opcja) Visual Studio 2012.

     

    Visual nie jest najlepsza opcją. Może kompilator w wersji 2012 jest już trochę lepszy niż ten w 2010, ale dalej jeszcze ma pewne braki jeśli chodzi o implementacje standardu c++0x.

     

    Ogólnie Code::Blocks to bardzo dobry pomysł, głównie dlatego, że to IDE nie jest związane z konkretnych kompilatorem. Można sobie dograć jaki się tylko podoba (np. gcc).

×
×
  • Dodaj nową pozycję...