View previous topic :: View next topic |
Author |
Message |
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jun 02, 2006 7:43 pm Post subject: Skaitlis ar vairak,ka 100 nullem |
|
Lieta tada,ka gribeju paradit draugam,kas ir aizravies ar Super Bingo, kada vinjam ir iespeja limet tajaa.Saaku reekjinaat,bet probleemat taada,ka skaitlii sanaak vairaak,kaa 100 nulles(apmeeram).Kaa vareetu apvienot baitus (tur apmeeram 50 baitiem sanaak) vienaa mainiigajaa?Tak nevar buut,ka zinaatnieki ar portatiivajiem datoriem straadaa tikai ar 8 baitiigiem skaitljiem. _________________ long time; /* know C */ |
|
Back to top |
|
|
Gurnisss
Joined: 05 Apr 2006 Posts: 20 Location: Ķekava
|
Posted: Fri Jun 02, 2006 7:54 pm Post subject: |
|
Varbūt nav īsti pa tēmu bet zinātnieki 1938. gadā izgudroja skaitli gugols kas ir 1 ar 100 nullēm. Šo skaitli nekad neizmanto, jo pat ātomu skaits mums zināmajā visumā nav tik liels.
P.S. Žurnāls "Ilustrētā zinātne" |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jun 02, 2006 8:11 pm Post subject: |
|
Hehe.. Kādas sestās/septītās klases viela, ja ne vēl agrāka? Tb saskaitīt/reizināt/atņemt/dalīt divus skaitļus pa cipariem :)
Ja gribi pats rakstī, tad ari kautvai tā - viens baits=viens cipars 0-9 (BCD - binary coded decimal):
Code: | char sk1[100], sk2[100];
// pie sk1 pieskaita sk2:
int carry = 0;
for (int i=0; i<99; ++i)
{
int tmp = sk1[i] + sk2[i] + carry;
sk1[i] = tmp%10;
carry = tmp/10;
}
sk1[99] += (sk2[99]+carry)%10; |
Pārējās operācijas gan implementē pats :)
Protams, krutākā gadījumā masīvi ir dinamiski un darbojās tiešām ar baitiem (vēlams 4-baitiem, tb int'iem), nevis cipariem. Tā ietaupās vieta (vienā baitā ta var iebāzt līdz "ciparus" līdz 255, nevis līdz tikai 9) un ātrums (nevajadzēs dalīt ar 10).
Ja gribi gatavus risinājumus, tad labs variants ir gmp: http://www.swox.com/gmp/ (protams ir vēl daudz citu variantu arī). |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jun 02, 2006 8:35 pm Post subject: |
|
Tavu domu bijau jau apsveeris,bet nenonaacu pie secinaajuma,jo tur jaaizpilda reizinaahsana,kas visu neduadz sarezhgjii.
Es biju domaajis taa(iisti neiedziljinaajos tavaa idejaa,bet laikam jau taa ir kautkas liidziigs maneejai)-njemt vienu baitu,kuraa buutu skaitlis no 0 liidz 9.Un tad vienkaarshi kombineet skaitli no tiem.Piemeram skaitlis 123 sastaavetu no 3 baitiem(1,2 un 3).Bet tomer butu nedaudz japalauza galvu par reizinashanu.
Te buus nepareizais kods:
Code: | __int64 nResult=1;
for (int i=26;i<76;i++)
{
nResult*=i;
}
cout<<nResult; |
Biju domaajis vai nevareetu kautkaa apvienot baitus,lai procesors tos varetu ta smuki rekjinat.Bet laikam bez library'jiem nevares->kachashu to GMP.
P.S. Patiesiba jau vienalga ka tikshu pie rezultata.Galvenais ir LAIKS,kaadaa pie taa tikshu.Pasham taisiit taas reizinaahsanas buus ilgaak,kaa nokachaat library. _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jun 02, 2006 8:44 pm Post subject: |
|
Reizinaashana nav nekas sarežģītāks tak :) (LU datoriķos vienā priekšmetā ir kontroldarbs, kurā viens no uzdevumiem bija uzrakstīt funkciju, kas sareizina šādus skaitļus :)
Reizināt vajag stabiņā - tb no otrā skaitļa ņem pa vienam ciparam, tb katru ciparu piereizini pie pirmā skaitļa un pieskaiti rezultātam. Tad ņem nākamo, tikai pareizinātu ar 10 (vēlāk ar 100, 1000 utt). Un tā tālāk.. Sanāk uzrakstīt tikai funkcijas, kas māk saskaitīt divus šādus skaitļus un funkciju, kas sareizina vienu šādu skaitli ar citu viencipara skaitli (tas taču ir viegli izradāms :). Un atliek to visu iebāzt ciklā.
Code: | 123
34
----
492
369
----
4182 |
|
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jun 02, 2006 8:48 pm Post subject: |
|
Paldies.To gmp implementeet sanaaks ilgaak.Itka jau tas viss ir logjiski,bet negribeejaas kjeepaaties.Be nu ok tulit kjeros pie kjepashanaas.Ievelkam elpu un ienirstam C++ uudenjos... _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jun 02, 2006 8:57 pm Post subject: |
|
Kā tas jāsaprot - to gmp implementēt sanāks ilgāk. Viņam ir ļoti vienkāršs API (jādarbojas gandrīzvai objekorientēti). |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jun 02, 2006 8:58 pm Post subject: |
|
Vinjam vajadzigs setups un nakas iedziljinaties manuaalii.Tavuprat ir verts to darit?Iespejams.
P.S. Es izmantoju VC++ 6. _________________ long time; /* know C */ |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jun 02, 2006 9:44 pm Post subject: |
|
Izrekjinaju.Iespeja laimet super bingo ir
1 pret 1599432974093600067896009239156107676288209506371901842134782334
820417536000000000000
Tomer labak ka nekas. _________________ long time; /* know C */ |
|
Back to top |
|
|
Janka
Joined: 14 Nov 2005 Posts: 19 Location: Jelgava
|
Posted: Fri Jun 02, 2006 11:18 pm Post subject: |
|
Driikst zinaat, kaa tu vinju reekinaaji?
5 no 35 manskiet sanaak... 324632 iespeejas tas buutu 1 pret 324632 |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Sat Jun 03, 2006 10:18 am Post subject: |
|
Vienkarspa kombinatorika - n!/k!. Shajaa gadiijumaa n! ir bumbinju skaits (75),bet k ir uz biljetes esosho laucinju skaits(25). _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Sat Jun 03, 2006 11:27 am Post subject: |
|
Hmm, Elwman, es ceru, ka tu neveidoji matemātisko progresiju skaitlim
!75 un !25 un tad nedalīji.
Brrr, jāuzmin 25 skaitļi no 75 iespējamiem? Vai tas ir reāli?
Hmm, !4 = 1*2*3*4 = 24, !2 = 2
24/2 = 12
Tavuprāt no 4 skaitļiem, ja vajag uzminēt 2, iespējamie varianti ir 12?
Laikam tā.... nu jā, izredzes uz Bingo ir švakas. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Jun 03, 2006 11:43 am Post subject: |
|
EDDY - faktoriālim izsaukuma zīme jāliek beigās, nevis sākumā.
Un kāds sakars tur progresijām? (kas vispār ir matemātiska progresija?)
Dalīt jau nu noteikti nevajadzēja. Vajadzēja tikai sareizināt: 26*27*..*74*75.
Nezinu kā spēlē to Super Bingo, bet vai tur kombinācijas (1 2) un (2 1) skaitās vienādas vai dažādas? Rēķinot ar n!/k! (neatceros kā to sauca) tu šādas kombinācijas uzskati par dažādām. Tb EDDY piemērā: (1 2) (1 3) (1 4) (2 1) (2 3) (2 4) (3 1) (3 2) (3 4) (4 1) (4 2) (4 3) - 12 gabali. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Sat Jun 03, 2006 11:49 am Post subject: |
|
Tur ir laukums ar ciperiem.Tev vienkarshi jauzmin visi cipari(vienlga kada seciba).Tapec ari izmantoju n!/k!.
Runajot par EDDY-vinsh vienkarshi kartejo reizi gribeja paradit,ka ir gudrs visur.
P.S.Un ja reiz tu nezini kas ir matematiska progresija(es ari nezinu un droshi vien vel paris miljardu zemes iemitnieku to nezin) un ka faktoriali tagad raksta ari izsaukuma zimi priekshaa,tad tu neesi tik gudrs kaa EDDY. _________________ long time; /* know C */ |
|
Back to top |
|
|
|