Kezdőoldal » Számítástechnika » Programozás » C#: az online gyakorló oldalon...

C#: az online gyakorló oldalon miért fut timeout-ra a kódom? 2 szám között előforduló négyzetszámokat kell megszámolni.

Figyelt kérdés

Próbálkoztam hagyományos megszámlálás tételével és for ciklussal is.

Azt, hogy négyzetszám-e, vizsgáltam többféleképpen is, kerekítésekkel, maradékos osztással...


A jelenlegi kódom:

return Enumerable.Range(a, b - a + 1).Count(number => Math.Sqrt(number) % 1 == 0);


Sőt, egyébként a for ciklusos megoldást beküldtem Javaban is, és úgy is Timeout.


2019. aug. 1. 19:21
1 2
 1/11 anonim ***** válasza:

Van sokkal hatékonyabb megoldása:

[link] - lásd a 2. metódust.

2019. aug. 1. 19:44
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

Hoppá... ezt át is engedte.


Nem igazán értem, vagyis fura számomra...


Akkor 9 és 81 között például 7 négyzetszám van ezen képlet alapján?

2019. aug. 1. 19:50
 3/11 anonim ***** válasza:
A te kepleted szerint hany van??
2019. aug. 1. 20:07
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
Nyugi van, más pont azért akar tanulni, mert nem úgy született, hogy tudja.....
2019. aug. 1. 20:25
 5/11 anonim ***** válasza:
Ki tudod iratni a te kepleteddel es ezzel az eredmenyt es ossze tudod vetni, akkor miert kerded??!
2019. aug. 1. 20:32
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

Azért kérdezem, mert érteni akarom ??????? Mert kaptam valakitől egy csiribú-csiribá képletet, amit érteni akarok ????????,


Egyre borzalmasabb itt a stílus. Remélem, hogy csak itt.



LeL.

2019. aug. 1. 20:50
 7/11 anonim ***** válasza:

Akkor azt kerdezd, amit tudni szeretnel, mert a kerdo mondatodra lehetne valaszolni egy igen/nemmel, de ezt az infot te magad is megtalalod konnyen.


Ismered a bibliai sztorit, amikor Mozes megpillantja az ego bokrot, es Isten imigyen szol hozza: Mozes, miert vagy nyomorek??

2019. aug. 1. 21:14
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
A négyzetgyök baromira időigényes művelet (ahogy papíron is), sokkal könnyebb a számok négyzetét kiszámolni, ezért számold ki az 1-nek a négyzetét, 2-nek a négyzetét stb. Ráadásul kevesebb számot is kell csekkolni. 1-től 10-ig kiszámolod a számoknak a négyzetét, akkor megkapod 1-től 100-ig a négyzetszámokat. Ezzel szemben ha bruteforce 1-től 100-ig minden egyes szám gyökét veszed, akkor alapból 10-szer több számon mentél végig, ráadásul 10-szer annyi ideig tart egy műveletet elvégezni.
2019. aug. 2. 11:01
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:
Utolso, mondjuk, pont nem ertetted meg a hatekony megoldast, csak ket negyzetgyokot kell szamolnod, elsot es utolsot, nem kell azok kozott is negyzetet szamolnod. Es ez a megoldas O(1), konstans idoben lefut, attol fuggetlenul, hogy az intervallumban tobbtiz vagy tobb tizmilliard szam van, ellenben az O(N) megoldassal, amelyben egyenkent leellenorzod mindegyiket.
2019. aug. 2. 11:33
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
#9 igazad van, bár a komplexitáskülönbség csak sqrt(n) és log(n).
2019. aug. 2. 11:43
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!