Jump to content

tw8

Active Members
  • Posts

    481
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by tw8

  1. Desi corect, codul lui begood este destul de incet: 8.5 secunde imi ia mie pe un Pentium M @ 1600 MHz.

    O solutie mult mai rapida este folosirea unui ciur pentru generarea numerelor prime la inceput. Astfel, se obtine un timp de rulare de 0.04 secunde - de 200 si ceva de ori mai rapid ca cel de mai sus :P.

    Cam asa ar arata codul:


    #include <iostream>
    #define eprim !NP
    #define DIM 1000000
    bool NP[DIM];
    using namespace std;

    void ciur()
    {
    for(int i=3;i<DIM;i+=2)
    if(eprim[i])for(int j=2*i;j<DIM;j+=i)NP[j]=1;
    }

    bool e14(int nr)
    {
    int c=14;
    while(nr&&c>=0)c-=nr%10,nr/=10;
    return !c;
    }

    int main()
    {
    ciur();
    int c=0;
    for(int i=3;i<DIM;i+=2)
    if(eprim[i]&&e14(i))c++;
    cout<<c;
    }

    L.E.: Am uitat sa specific. Se pot elimina foarte multe cazuri daca ne gandim ca numerele divizibile cu 3 nu trebuiesc luate in calcul, pentru ca suma cifrelor lor nu poate fi 14 :P.

  2. Ai gresit la C(30,12). Daca tii neaparat sa faci prin metoda asta, atunci C(30,12) ar fi 3 * 7 * 13 * 19 * 23 * 25 * 29.

    Totusi, e mult mai la indemana sa folosesti WolframAlpha pentru asta sau chiar calculatorul de la Windows :).

    Rezultatul este, dupa cum a spus si Hertz, -86454177.

  3. Folosindu-ne de inversa functiei H(n), putem lua doar numerele divizibile cu 232792560 - adica cel mai mic multiplu comun al numerelor de la 1 la 20 - si sa verificam daca sunt hexagonale. Asta scuteste de o gramada de calcule inutile :P.

    Rezultatul programului meu:


    Numarul #1: H(1348848) = 3638780505360
    Numarul #2: H(5925920) = 70233049766880
    Numarul #3: H(7274768) = 105844491632880
    Numarul #4: H(8751600) = 153180996368400
    Numarul #5: H(9267440) = 171770879039760
    Numarul #6: H(11099088) = 246379497764400
    Numarul #7: H(11309760) = 255821331205440
    Numarul #8: H(12093120) = 292487090575680
    Numarul #9: H(14440608) = 417062304378720
    Numarul #10: H(14651280) = 429319996625520
    Numarul #11: H(17127968) = 586734558490080
    Numarul #12: H(17338640) = 601256856760560
    Numarul #13: H(18019040) = 649371587024160
    Numarul #14: H(19686128) = 775087251578640
    Numarul #15: H(20577200) = 846842299102800
    Numarul #16: H(22511808) = 1013562976345920
    Numarul #17: H(23192208) = 1075757000638320
    Numarul #18: H(23402880) = 1095389561185920
    Numarul #19: H(25750368) = 1326162878520480
    Numarul #20: H(28437728) = 1617408719166240
    Numarul #21: H(30430400) = 1852018457889600
    Numarul #22: H(31779248) = 2019841175111760
    Numarul #23: H(33256080) = 2211933680676720
    Numarul #24: H(35603568) = 2535228073057680
    Numarul #25: H(35814240) = 2565319537740960
    Numarul #26: H(36494640) = 2663717460964560
    Numarul #27: H(39182000) = 3070458208818000
    Numarul #28: H(41740160) = 3484481871911040
    Numarul #29: H(42523520) = 3616499463857280
    Numarul #30: H(44355168) = 3934761812261280
    Numarul #31: H(44565840) = 3972228145245360
    Numarul #32: H(45081680) = 4064715698163120
    Numarul #33: H(46913328) = 4401720641157840
    Numarul #34: H(47696688) = 4549948044642000
    Numarul #35: H(47907360) = 4590230236431840
    Numarul #36: H(50254848) = 5051099444751360
    Numarul #37: H(52942208) = 5605754722888320
    Numarul #38: H(53833280) = 5796044017283520
    Numarul #39: H(57657600) = 6648797617862400
    Numarul #40: H(59006448) = 6963521752146960
    Numarul #41: H(60999120) = 7441785220549680
    Numarul #42: H(63686480) = 8111935405894320
    Numarul #43: H(66244640) = 8776704591214560
    Numarul #44: H(68859648) = 9483302176508160
    Numarul #45: H(69070320) = 9541418140734480
    Numarul #46: H(69750720) = 9730325811286080
    Numarul #47: H(71417808) = 10201006527631920
    Numarul #48: H(72308880) = 10457148181399920
    Numarul #49: H(74996240) = 11248871953278960
    Numarul #50: H(78337760) = 12273609205297440
    Numarul #51: H(80169408) = 12854267877971520
    Numarul #52: H(82162080) = 13501214697690720
    Numarul #53: H(83510928) = 13948150107331440
    Numarul #54: H(88834928) = 15783288776695440
    Numarul #55: H(90913680) = 16530594331371120
    Numarul #56: H(93471840) = 17473969652499360
    Numarul #57: H(94255200) = 17768085359824800
    Numarul #58: H(96813360) = 18745653252165840
    Numarul #59: H(99500720) = 19800786461536080

    In total, exista 59 numere!

  4. @AlStar:

    In primul rand, programul tau are o greseala evidenta, si anume considera doar numerele care pot fi scrise ca suma dintre 1 si un cub, din cauza conditiei de oprire :P.

    In al doilea rand, chiar daca ii repari aceasta greseala - foarte usor de reparat - mai e ceva. Iei de mai multe ori in vedere aceleasi numar, in cazul in care poate fi scris in mai multe moduri ca suma de cub si patrat. Spre exemplu, numarul 17 poate fi scris ca :

    16 + 1 = 4^2 + 1^3

    9 + 8 = 3^2 + 2^3

    Si, nu in ultimul rand, ai un cod foarte neeficient din punct de vedere al timpului de executie. Un cod mult mai rapid - si functional - este:


    #include <iostream>
    #define DIM 100000
    bool trecut[DIM];
    int main()
    {
    int P=1,C,j,s=0;
    for(int i=1;P<DIM;P+=2*i+1,i++)
    for(C=j=1;P+C<DIM;C+=3*j*(j+1)+1,j++)
    if(!trecut[P+C]){trecut[P+C]=true,s+=P+C;}
    std::cout<<s;
    }

    In concluzie ... codul de mai sus ruleaza instantaneu chiar si pentru numere de pana la 10 milioane - desigur, daca s este definit ca long long in loc de int cum am eu in program, ca sa poate intra in memorie - si in plus, da si raspunsul corect: 502682822.

    Bafta!

  5. Hai sa vin si eu cu 5 melodii:

    Nimeni Altu - Asa raman

    Nimeni Altu - Lautarul din beci

    Vita de Vie - Varza

    Vita de Vie & Parazitii - Beat mort

    CTC - Interzis nefumatorilor

    Sunt intr-o ordine complet intamplatoare. De asemenea, as mai putea adauga inca cel putin 100 de melodii, dar chiar n-am chef :P.

  6. Reparati si voi vulnerabilitatile:


    http://www.black-zero.com/modules.php?name=Tutorials&t_op=viewtutorial&tc_id="><script>alert(String.fromCharCode(88,83,83,32,45,32,98,121,32,116,119,56))</script>

    http://www.black-zero.com/modules.php?name=Tutorials</title><script>alert(String.fromCharCode(88,83,83,32,45,32,98,121,32,116,119,56))</script>

    Mai sunt multe altele.

  7. faza cu inceputu hai ca merge dar la sfarsit e problematic,nu vreau sa caut dupa 2 paranteze ,ar fi mers dar sunt unele cazuri unde nu merge...

    Pentru sfarsit, in loc sa cauti dupa "))", poti cauta dupa "))\r\n", adica "))"+enter.

  8. Da, te inteleg. Iti depaseste nivelul de intelegere. Iti mai explic odata.

    1. Link-ul direct catre XSS este http://209.85.135.104/translate_c?hl=ro&tl=lv&u=http://iruleyousuck.org/black/index.php&usg=ALkJrhjmpz4vGu0nD_H8ExwEind17x_-oA . Daca te uiti in sursa, o sa observi ca e XSS. Si IP-ul de mai sus e al lui Google.

    2. "Restrictionarea accesului la cookie"? Asta e posibil doar in StarTrek. Filtrarea dupa "document.cookie" nu ajunge, se poate ajunge la cookie, de exemplu, printr-un document.write() fara sa contina "cookie".

    Daca nici acum nu ai inteles, da-ti doua palme si revino mai tarziu.

  9. Ok, sa va lamuresc.

    1. E XSS. Daca o sa va uitati cand va afiseaza alert-ul, veti vedea ca vine de la http://209.85.135.104 . Al cui IP e ala ... incercati si veti vedea :).

    2. Ce vi se pare asa normal ? Codul Javascript trebuie tradus si el :)) ? Voi daca ati face un traducator, nu ati filtra mai intai continutul ? Daca nu, ati fi ratati. Si NU e deajuns sa se blocheze document.cookie, se poate face intr-un milion de feluri sa ai acces la cookie-uri fara sa contina cuvantul cookie,

  10. am facut un script in care introduci o lista de ip-uri (introduse unu sub altul / adica despartzite prin enter) intr-un textarea si iti testeaza daca acele host-uri sunt online sau offline... (l-am facut in graba scuzati lipsa de optimizare)... have fun:


    <?php
    ...
    for ($i=0; $i <$i+1; $i++){
    if(!isset($ex[$i])){exit;}
    ...?>

    Cam prostesc :). Faci niste operatii in plus degeaba.

    Puteai folosii count:


    for($i=0;i<count($ex);$i++)

    P.S.: Sper sa o iei ca pe un sfat, nu ca pe un repros ;).

  11. Bine v-am (re)gasit. Acesta este un mini-tutorial despre cum sa downloadam fisiere de pe http://www.hackclips.com.

    1. Downloadam si instalam GreaseMonkey, un plug-in pentru Firefox.

    2. Creem un fisier cu numele "hackclips.user.js".

    3. Intram aici si copiem scriptul in fisierul creat anterior.

    4. Deschidem fisierul cu Firefox si instalam miniaddon-ul.

    5. Intram pe clip-ul pe care vrem sa il downloadam.

    6. Dam click-dreapta pe imaginea cu maimuta din statusbar, apoi apasam Ctrl+C (sau mutam mouse-ul deasupra "User Script Commands" ) si dam click pe "Download this video".

    Have fun :).

  12. A se folosi impreuna cu GreaseMonkey:


    // ==UserScript==
    // @name HackClips Download - by tw8
    // @namespace tw8
    // @description Using this script you can download any video from "http://www.hackclips.com/"
    // @include [url]http://www.hackclips.com/video/*[/url]
    // ==/UserScript==

    /*Made by tw8
    Have a look on:
    [url]http://www.hackpedia.info[/url]
    [url]http://skullbox.info[/url]
    [url]http://rstcenter.com[/url]
    */


    function get_link()
    {
    var link = document.location.href;
    link = link.substr(link.lastIndexOf("/")+1);
    return "http://www.hackclips.com/fplayer.php?id=" + link;
    }

    function true_link(source)
    {
    var link = source.substr(0, source.indexOf("</file>"));
    link = link.substr(link.indexOf("<file>")+6);
    document.location = link;
    return 0;
    }

    GM_registerMenuCommand
    ('Download this video', function()
    {
    var tw8 = get_link();
    GM_xmlhttpRequest
    ({
    method:"GET",url:tw8, headers:{"User-Agent":"Mozilla/5.0", "Accept":"text/xml"}, onload:function(response)
    {
    var continut = response.responseText;
    true_link(continut);
    }
    })

    }
    );

    O sa fac si un mini-tutorial de instalare, pentru ca multi nu stiu cum sa il puna pe picioare.

×
×
  • Create New...