abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 19:44 | IT novinky

    Americké firmy Tesla a SpaceX postaví v texaském Austinu moderní komplex na výrobu čipů pro umělou inteligenci (AI). Součástí projektu s názvem Terafab budou dvě moderní továrny na výrobu čipů – jedna se zaměří na automobily a humanoidní roboty, druhá na datová centra ve vesmíru. Uvedl to generální ředitel těchto firem Elon Musk. Projekt by podle odhadů měl stát 20 miliard USD (zhruba 425 miliard Kč).

    Ladislav Hagara | Komentářů: 0
    dnes 15:00 | Nová verze

    Byla vydána nová stabilní verze 6.11 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 01:44 | Bezpečnostní upozornění

    Ubuntu 26.04 patrně bude ve výchozím nastavení zobrazovat hvězdičky při zadávání hesla příkazu sudo, změna vychází z nové verze sudo-rs. Ta sice zlepší použitelnost systému pro nové uživatele, na které mohlo 'tiché sudo' působit dojmem, že systém 'zamrzl' a nijak nereaguje na stisky kláves, na druhou stranu se jedná o možnou bezpečnostní slabinu, neboť zobrazování hvězdiček v terminálu odhaluje délku hesla. Původní chování příkazu sudo

    … více »
    NUKE GAZA! 🎆 | Komentářů: 9
    včera 21:33 | Komunita

    Projekt systemd schválil kontroverzní pull request, který do JSON záznamů uživatelů přidává nové pole 'birthDate', datum narození, tedy údaj vyžadovaný zákony o ověřování věku v Kalifornii, Coloradu a Brazílii. Jiný pull request, který tuto změnu napravoval, byl správcem projektu Lennartem Poetteringem zamítnut s následujícím zdůvodněním:

    … více »
    NUKE GAZA! 🎆 | Komentářů: 20
    včera 17:22 | Nová verze

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 163 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.3. 15:22 | IT novinky

    Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního

    … více »
    NUKE GAZA! 🎆 | Komentářů: 5
    21.3. 15:11 | Zajímavý projekt

    Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.

    Ladislav Hagara | Komentářů: 14
    21.3. 04:44 | Zajímavý software

    Cambalache, tj. RAD (rapid application development) nástroj pro GTK 4 a GTK 3, dospěl po pěti letech vývoje do verze 1.0. Instalovat jej lze i z Flathubu.

    Ladislav Hagara | Komentářů: 0
    20.3. 14:55 | Nová verze

    KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    20.3. 13:22 | IT novinky

    Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.

    Ladislav Hagara | Komentářů: 18
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1137 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: Java - metoda opak. ctvercu

    ahad!3l avatar 15.10.2010 15:40 ahad!3l | skóre: 6
    Java - metoda opak. ctvercu
    Přečteno: 1356×
    Zdravim. Dostal jsem za ukol napsal program v Jave, ktery ma umocnit cele zadane cislo. V Jave nemam zadne zkusenosti, takze si ani s takovou trivialni veci bohuzel nevim rady. Chtel bych nekoho proprosit, kdyby by me mohl postrcit. Cele zadani zni takto:

    Napište funkci, která umocní zadané celé číslo a (typu long) na b (typu long) ve zbytkové třídě Zn; vše jen pomocí násobení. Vstupem funkce jsou hodnoty a,b,n; výstupem je a^b (a na b; POZOR v jave je to XOR) v Zn (opět typu long). K umocnění použijte metodu opakovaných čtverců. Funkci použijte v programu, který z klávesnice načte hodnoty a, b (b>=0), n (n>1); vypočte a^b (umocní a na b) v Zn a výsledek vypíše.

    Počítání ve zbytkové třídě Zn (modulo n) je takové, že na výsldek aplikujete modulo n (tj: a+b v Zn = (a+b)%n; a*b v Zn = (a*b)%n atd.)


    A nasledne vysvetlivky:
    1. Inicializujeme pomocnou proměnnou x=1.
    2. Mocnitel (b) se zapíše v binárním kódu (např. 11 dekadicky se zapíše binárně jako 1011); mezi znaky binárního kódu vepíšeme znak s (s jako square; např. pro 11 dekadicky, tedy 1011 binárně, je to 1s0s1s1).,
    3. Tuto posloupnost procházíme zleva doprava, pokud narazíme na 1, vynásobíme x hodnotou a; pokud narazíme na 0 neděláme nic; pokud narazíme na s umocníme x na druhou (uděláme čtverec). Všechny zmíněné operace jsou modulo n (tedy %n). Poté, co projdeme celý řetězec, je v proměnné x uložen výsledek.

    * Řetězec (např. 1s0s1s1) nemusíme vytvářet, je jen pro představu. NEPŘIJÍMÁM úkoly s použitím řetězců. Metodu implementujeme pomocí cyklu, jehož tělo se bude opakovat maximálně tolikrát, kolik je bitů v příslušném datovém typu.

    Postupuji zatim dobre?
    package dcv4;
    
    public class Zn {
    
    	
    	public static void main(String[] args) {
    		java.util.Scanner jc = new java.util.Scanner(System.in);
    		
    		System.out.printf("Zadejte n: ");
    		
    		
    		long a, b = 1011;
    	int n;
    	int x = 1;
    	
    	if (a^b) {
        if (b>=0, n>1) {
    	}
    Dekuji za kazdou radu.

    Odpovědi

    15.10.2010 15:56 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Myslím, že nepostupuješ. Jestli zkoušíš to 1011 z příkladu, tak to je jen binárně zapsané číslo 11 (jedenáct), nikoli tisíc jedenáct. Také se mi nezdá a^b, proč to tam je? Asi bys měl procházet číslo b po jednotlivých bitech a podle hodnoty daného bitu pracovat s číslem x.
    15.10.2010 19:45 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Zkus sem hodit něco, co bude přeložitelné... v prvním if není výsledkem boolean, n nemáš inicializované, co znamená ta čárka v druhém if?
    Překladač ti nikdy neřekne: "budeme kamarádi"
    16.10.2010 11:48 x22
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Ono to nie je az tak trivialne. nasobenie mod long sa pocita blbo kvoli moznemu preteceniu. Cudujem sa, ze o tomto problem sa v zadani nepise, ked uz je tam celkom podrobny postup.

    Zistit, aky je k-ty bit cisla b sa da zistit 2 operatormi (vysledok je rovno boolean).
    16.10.2010 12:44 Marek
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    >pomocí cyklu, jehož tělo se bude opakovat maximálně tolikrát, >kolik je bitů v příslušném datovém typu Zdravim.

    Mame (b)_10 = (b_p b_(p-1) ... b_1 b_0)_2

    Skus sa zamysliet ako zo znalosti: (v dalsom (...) znamena v dvojkovej sustave)

    a^(b_p ... b_1) mod n mozno vypocitat
    1. a^(b_p ... b_1 0) mod n
    2. b) a^(b_p ... b_1 1) mod n

    Je to vlastne popisane v hinte 3.

    Cyklus, ktory zbehne maximalne tolkokrat, kolko je bitov v reprezentacii datoveho typu pre b sluzi zase na to, aby sa dala zistit reprezentacia b v dvojkovej sustave zlava. (Vacsinou sa ide sprava, t.j. od poslednej cislice.)

    Tieto dve veci treba dat dokopy a mas program.

    Priklad:
    
    a^6 mod n, predpokladame, ze datovy typ reprezentujuci 6 ma 4 
    bity. Preto, 6 je reprezentovane ako 0101.
    
    Na zaciatku mame a^(0) mod n = 1.
    
    Zistime prvu cislicu 4-bitovej reprezentacie cisla 6:
    
    0: -> pouzijeme postup, ako z a^(0) mod n -> a^(00) mod n
    
    V dalsom kroku zistime 2. cislicu:
    
    1: -> pouzijeme postup, ako z a^(00) mod n -> a^(001) mod n
    
    3. cislica:
    
    0: a^(001) mod n -> a^(0010) mod n
    
    4. cislica:
    
    1: a^(0010) mod n -> a^(00101) mod n
    
    a mame vysledok. 
    

    Snad to aspon trochu pomoze.

    Marek

    ahad!3l avatar 17.10.2010 13:59 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Moc dekuju za rady, ale je to na me stejne slozite. Javu jsem pred 2 tydny videl poprve. Jinak tady jde videt zadani asi lepe..
    17.10.2010 18:28 vaki | skóre: 1
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Algoritmus je to pěkný, na pár řádků. Jeho obtížnost je pro začátečníky řekl bych střední.

    Popis algoritmu v odkazovaném dokumentu je dostatečný. Dle zkušeností se však začátečník při pohledu na tento popis vyděsí a začne přemýšlet víc o tom co neví než o tom co ví.

    algoritmus jsem si naprogramoval a i když nemám moc čas ho testovat zdá se být funkční. Nejprve se úplně vykašlete na načítání hodnot a zaměřte se na samotný výpočet tak, jak je popsaný v zadání.

    Krok 1) Inicializovat proměnnou - tak to je snad jasné

    Krok 2) Převést na binární číslo v textovém řetězci je zadavatelem zakázané, proto jediné co potřebujeme od toho kroku je zjistit kolik bitů vlastně dané čáslo zaujímá. Alternativou je použít konstantu Long.BITS ale v tom případě by se vždy testovali všechny bity. Nevím zda je zadavatelme přijatelné řešení kupříkladu níže popsaný převod. Nechám na Vašem uvážení

    int pocetBitu=Long.toBinaryString(b).length()

    Krok 3) Zde je třeba se zamyslet. Zadavatel výslovně zakázal používat řetězec. Přesto jsme schopni zjistit zda je na požadovaném místě binární reprezentace čísla b jednička nebo nula. Pro i-tý bit čísla si jednoduchým výpočtem 2 na i-tou vytvořte bitovou masku a jejich ANDem (operace & ) zjistíte zda je tam jednička nebo ne.

    2a) je jednička? Pak podle popisu provede násobení x číslem a (avšak v modulu zn) tedy

    x = (x*a)%zn;

    2b) je nula? neděláme nic

    2c) ještě musíme ošetřit stav 's', a při rychlém pohledu do řetězce v příkladu je jasné, že znak 's' následuje za každým znakem, kromě posledního. Tedy pokud pracujeme s jiným než posledním znakem, provedeme navíc krok x na druhou opět v modulu zn

    x = (x*x)%zn;

    Když takto projdeme všechny bity čísla b, máme v x uložený výsledek.

    --- Algoritmus Vám samozřejmě mohu poslat, ale samotné řešení bez jeho pochopení Vám v dlouhodobém výhledu stejně nepomůže.
    ahad!3l avatar 17.10.2010 19:47 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Pokud byste byl tak hodny, reseni by se mi hodilo. ( ahadiel@centrum.cz )
    Alespon bych si to okoukal, ikdyz mi ve studiu nepomuze, to mate pravdu. ( ) Ja totiz moc nechapu celkove zadani. Umocneni se mi podarilo provest takto:
    public class Mocnina {
        
        public static void main(String[] args) {
            java.util.Scanner in = new java.util.Scanner(System.in).useLocale(java.util.Locale.US);
            
            for (; ; ) {
                System.out.println("Zadej dvě celá čísla: ");
                int m = in.nextInt();
                int n = in.nextInt();
                int mocnina = 1;
                int nn = n;
                int mm = m;
                while (nn > 0) {
                    if (nn % 2 == 1) {
                        mocnina = mocnina * mm;
                    }
                    mm = mm * mm;
                    nn = nn / 2;
                }
                System.out.println(m + " na " + n + " = " + mocnina);
            }
        }
    }
    Ovsem nevim si rady s temi bity, zbytkovou tridou Zn. Celkove se mi zda, ze je to celkem neumerne nasim schopnostem, jelikoz 90% tridy v Jave pred 2 tydny teprve zacalo, vcetne me. Mam ale vybornou knizku, tak se snad moje schopnosti brzy rozsiri. Moc Vám děkuji za ochotu.
    17.10.2010 19:54 vaki | skóre: 1
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Moje metoda pro mocinu:
    
    public static long MetodaOpakovanychCtvercu(long a, long b, long zn){
    		// zjistíme počet bytů mocnitele (parametr b)
    		int pocetBitu = Long.toBinaryString(b).length();
    
    		// inicializace výsledkové proměnné
    		long x = 1;
    		
    		// procházení čísla
    		for(int i=pocetBitu-1; i>=0; i--){			
    			// Spočítáme bitovou masku pro i-tý bit
    			long mask = Math.round(Math.pow(2, i));
    			
    			/* je-li i-tý bit čísla b 1 provedeme operaci pro znak '1'*/
    			if((b & mask) == mask )
    				x = (x*a)%zn;
    
    			/* pokud se nejedná o poslední bit, provedem operaci znak 's' */
    			if(i > 0)
    				x = (x*x) % zn;
    		}
    		
    		return x;
    	}
    
    ahad!3l avatar 17.10.2010 20:19 ahad!3l | skóre: 6
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Uff..no budu to muset prostudovat a nejak se s tim poprat. Tohle bych teda nezplodil. Dekuji, ze jste tam vlozil i komentare. Alespon vim, co jaky radek ma za ukol delat.
    17.10.2010 20:27 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Lepší než
    long mask = Math.round(Math.pow(2, i));
    je
    long mask = 1l << i;
    Překladač ti nikdy neřekne: "budeme kamarádi"
    17.10.2010 20:37 Radovan
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Hele, nejste z jedné třídy? http://forum.root.cz/index.php?topic=1056.0
    Saljack avatar 19.10.2010 11:04 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: Java - metoda opak. ctvercu
    Ha ha nejsi náhodou z FELu a tohle máš do algoritmizace :-D tohle jsme také dělali.
    Sex, Drugs & Rock´n Roll.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.