Tema sukurta: 2015.04.10 19:52
2015.04.10 19:52 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Žiaigis
Žiaigis
Pradedantysis
Šachmatų išradėjas iš valdovo paprašė tokio atlygio: ant pirmo šachmatų lentos langelio padėti vieną grūdą, ant antrojo - du, ant trečiojo - keturis ir t.t., vis dvigubinant, kol pasibaigs langeliai. Kiek grūdų gaus šachmatų išradėjas? Šachmatų lentoje yra 64 langeliai.

Atsakymas:
18446744073709551616 grūdų.

Kokie turėtų būti veiksmai? Nelabai suprantu uždavinius su ciklais :(
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.10 20:53 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


mezmerize
mezmerize
Didmeistris
64! va tau ir atsakymas visas uzdavinio sprendimas
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.10 21:51 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Žiaigis
Žiaigis
Pradedantysis
mezmerize rašė:

64! va tau ir atsakymas visas uzdavinio sprendimas


Nežinau, ką tu čia norėjai tuo parodyti, bet aš klausiu žmonių, kurie supranta ir gali padėti :)
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.10 22:43 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


GnI
GnI
Patyręs
Žiaigis rašė:

Šachmatų išradėjas iš valdovo paprašė tokio atlygio: ant pirmo šachmatų lentos langelio padėti vieną grūdą, ant antrojo - du, ant trečiojo - keturis ir t.t., vis dvigubinant, kol pasibaigs langeliai. Kiek grūdų gaus šachmatų išradėjas? Šachmatų lentoje yra 64 langeliai.

Atsakymas:

18446744073709551616 grūdų.

Kokie turėtų būti veiksmai? Nelabai suprantu uždavinius su ciklais :(


Techniškai žiūrint, jame ciklų ir nereikia, nes tai yra elementari geometrinės progresijos suma (pirmų 64 elementų), tai yra formulė tam gauti.

Bet, jeigu nori su ciklais - labai paprastai - yra keli būdai:
1) Suki ciklą 64 kartus, kuriame viename kintamajame kaupi galutinę sumą (atsakymą), kai kitame saugai einamąjį elementą, kurį vis daugini iš 2 kiekvienoj iteracijoj.
2) Suki ciklą 64 kartus (nuo 0 iki 63!), kuriame prie kintamojo skirto saugoti atsakymui pridedi skaičių 2 pakeltą ciklo kintamojo laipsniu.

Kiek testavau, abudu būdai veikia, tik dabar tau nepasakyčiau kokia funkcija kelia laipsniu paskalyje, nes jo aš neliečiau nuo pirmo univero kurso.

Pastaba: Tau reikės naudoti "UInt64" kintamojo tipą rezultatui ir/ar einamąjam elementui saugoti, o ne "Integer", dėl (paprastai pasakius ir nesigilinant į detales) pernelyg didelių skaičių, nes tas rezultatas kurį turi gauti į "Integer" tiesiog netilps.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.11 08:56 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


GnI
GnI
Patyręs
mezmerize rašė:

64! va tau ir atsakymas visas uzdavinio sprendimas


Deja, bet faktorialas čia netinka, nes 64! = 1 * 2 * 3 * 4 * ... * 64, kai, čia reikia rasti sumą 1 + 2 + 4 + 8 + ... + 2^(64-1).
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.11 19:42 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Blussa
Blussa
Didmeistris
GnI gerai sako, 2 variantas ypač patogus. Gal būt, žiaigiui būtų aiškiau užrašius sumą tokiu pavidalu S = 2^0 + 2^1 + 2^2 +...+ 2^63.
Bet kuriam galui dėl to reikėtų kankintis su paskaliu, niekaip nesuprantu .
Cituoti
Atsakyti
Registruokis ir diskutuok!
2015.04.12 17:19 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Žiaigis
Žiaigis
Pradedantysis
Blussa rašė:

GnI gerai sako, 2 variantas ypač patogus. Gal būt, žiaigiui būtų aiškiau užrašius sumą tokiu pavidalu S = 2^0 + 2^1 + 2^2 +...+ 2^63.

Bet kuriam galui dėl to reikėtų kankintis su paskaliu, niekaip nesuprantu .


Dėkoju. Programavimas mokyloje, taip ir kankinamės :D
Cituoti
Atsakyti
Registruokis ir diskutuok!
© 2006 – 2024 Forumas "Draugas.lt"  |  Privatumo politika  |  Naudojimosi taisyklės  |  Reklama  |  Kontaktai