Stránka 1 z 1

Chyba v úloze č. 2

Napsal: 13-03-2019 19:32
od cajthamlmatej
Dobrý den,

v popisu úlohy č. 2 se nejspíše nachází chyba. Má-li se začínat testovací sada tím, že se získávají z funkce nextInt spotřeby jednotlivých budov, není možné aby funkce nextInt, která například u první ukázkové sady dostává x = 3, a = 2, b = 0 vrátila k první budově x = 1. (3 * 2 + 0) mod (10^9 + 7) se totiž rovná číslu 6. Zjistil jsem, že nejspíše vám u kalkulace spotřeby budov chybí mod N. Tedy, že spotřeba budovy se počítá: nextInt(x, a, b) mod N. Když se vypočítání takto upraví, spotřeby budov a celý zbytek úlohy sedí.

Re: Chyba v úloze č. 2

Napsal: 13-03-2019 19:55
od tung
Ahoj,

mas pravdu, opravime to co nejdrive.

Re: Chyba v úloze č. 2

Napsal: 13-03-2019 22:20
od pocitac770
Dále bych se přidal s tím, že je chyba podle mě v i popisku limitování K jakožto "pokud je K větší jak E-B+1, pak proveďte modulo E-B+1". To všechny délky a požadované hodnoty prodlužuje o 1, a kupříkladu na intervalu o délce 1 (E = B) (tzn. jediná hodnota kterou můžeme najít podle formátování v příkladu je 0.) to po nás může chtít 1. hodnotu.
A dále asi taktéž (stejně jako v minulém kole) bych tuto metodu nedefinoval "nextInt", ale "nextLong" protože se musí použít long, jinak může nastat přesah intu, hodnoty se dostanou do záporných čísel, a už ani modulo nepomůže.

Re: Chyba v úloze č. 2

Napsal: 13-03-2019 22:23
od tung
Mohl bys mi ukazat dalsi priklad? Pokud B = E, tak jakekoliv cislo modulo 1 je 0 (doufam :D).

Re: Chyba v úloze č. 2

Napsal: 13-03-2019 22:33
od pocitac770
to ano, ale v zadání je řečeno, pokud je to VĚTŠÍ, to znamená, že se modulo neprovede :D

Re: Chyba v úloze č. 2

Napsal: 13-03-2019 22:39
od tung
Aha, uz to snad vidim, diky ;).

Re: Chyba v úloze č. 2

Napsal: 14-03-2019 18:26
od tung
Zadani je opravene, diky za nahlaseni ;). Snad uz tam zadne chyby nejsou.

Re: Chyba v úloze č. 2

Napsal: 16-03-2019 21:17
od cajthamlmatej
Ahoj,

zřejmě jsem našel další chybu - u sebe jsem jí opravil a zapomněl jsem jí dodat u prvního příspěvku. U hodnot proměnných B a E se také musí použít mod N, tedy, že B(E) = nextLong() mod N. Pokud se modulo nepoužije, hodnoty jdou do velmi velkých čísel. Toto v zadání však neuvádíte - jen je tu zmínka o modulo u spotřeb budov.

Re: Chyba v úloze č. 2

Napsal: 16-03-2019 21:59
od tung
Ahoj,

diky za nahlaseni, opraveno, snad bude brzo na webu ;).

Re: Chyba v úloze č. 2

Napsal: 17-03-2019 11:09
od tung
Tak uz je opravena i tato chyba, diky za nahlaseni ;).