Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

BigOperation - operatii numere mari

- - - - -
  • Please log in to reply
57 replies to this topic

#1
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
BigOperation
BigOperation este un proiect codeblocks 17.12.
Dar poti sa utilizezi si Microsoft Visual Studio 2010 (sau versiune mai noua),
adauga aceste doua fisiere la proiect: codul sursa big_lib.cpp si header-ul big_lib.hpp,
si dupa include in fisierul cpp asta:
#include "big_lib.hpp"

BigOperation este un calculator de operatii numere mari intregi,
urmatoarele operatii sunt suportate:
mul = inmutire
add = adunare
sub = scadere
div = impartire
mod = modulo (restul impartirii)
pow = ridica un numar la o putere

Citeste ReadMeBigOperation.txt pentru mai multe informatii, desi este in engleza,
main.cpp contine un exemplu de utilizare.

Postat pentru "review" (analizare) si testare.

Attached Files


Edited by IvanMihai, 03 April 2020 - 13:54.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
In C++ ne place + - * / ... in loc de add/sub/div Posted Image

Incearca sa-l pui si pe github. Acolo poti intampina usor lumea cu un readme (in markdown)

Edited by dani.user, 03 April 2020 - 14:17.


#3
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

Quote

In C++ ne place + - * / ... in loc de add/sub/div
Ah, operators overloading, nu cred ca voi face asta la acest punct.
Voi face upload pe github numai dupa ce voi sti ca functioneaza corect, motivul pentru care l-am postat aici.

Inca o chestie: totul este pastrat intr-un vector<long long>
semnul l-am pastrat in primul long long din vector diferit de zero,
nu stiu daca asta este varianta optima.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Vezi si https://forum.softpe...8#entry25962566 ca inspiratie

View PostIvanMihai, on 03 aprilie 2020 - 14:28, said:

voi sti ca functioneaza corect

Un foarte bun prilej pentru a scrie niste unit tests. Adica o aplicatie ce foloseste ce ai facut tu si verifica cat mai multe operatii , de exemplu ca
"1" + "2" = "3"

#5
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Cum trateaza numerele cu semn? https://forum.softpe...8#entry25962566
( Desi in proiectul initial numerele sunt pozitive: de la 0 la 5. )

Cum faci unit tests pentru numere mari ("big integers") ???
Pana la urma trebuie sa stii cumva rezultatul operatiei cu numere mari!

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
N-am trat semnul acolo.

In Python de exemplu poti calcula usor cu numere mari. Cum ma astept ca Python sa dea rezultatul corect as scrie un script ce genereaza niste fisiere mari de inputs & outputs si apoi as compara rezultatul programului tau cu ce a rezultat din python.

Quote

>>> 12345 * 123456789 * 123456789123456789123456789
188157289859259271604259271416101981745

Edited by dani.user, 03 April 2020 - 15:53.


#7
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Cel mai important aspect din codul meu linkuit: incapsularea. Definesti o clasa ce reprezinta un numar mare si oferi diverse operatii pentru numere mari.

Ca acea clasa foloseste intern un vector<long long> e un detaliu ce te intereseaza doar pe tine (cel ce dezvolti clasa). Cine o foloseste nu trebuie sa stie acest detaliu, si nu trebuie sa poata sa-si bage nasul prin ce-i acolo (accidental).

void finalize(std::vector<long long>& res);


Cand ar trebui sa chem asta? De ce ar trebui sa stiu de pasi intermediari ai inmultirii?

#8
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

Quote

void finalize(std::vector<long long>& res);

Cand ar trebui sa chem asta?

Niciodată! Metoda este utilizata intern pentru inmultire si adunare (este transportul/carry dupa operatie).

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Atunci nu trebuie expusa in headerul public.

O inmultire de test care nu da ce trebuie:

Quote

30194693372392275795306584466152797092952625113753405153293729035682348226419571105699786130671891263137594431024244207919308344046717456026994714485976281452872898009309626457874010066771097767331187914961020838365218868437035152743921840969694911272063890064436399061250237351873261326081350507656495257372214284796059302603427113900752530670266713676070911914085825837356528289349543700967311029409825611428961686849778393576418046581057208827359919363431544018726449934221437804235423788427884676679666300800443928601687086664874760860022139135155167726283736218823489941735199826787339737326554917094353946176664373261314191724675698243403108431738319007603230943688734225864690377595549784316593487915900033497144478764185613479678087064825651287825878817995315926120183234673407131496725229987277963875280396075564369825882622785502374910760931669606416702544614645575017535396722169873661039686710681821825562240127394688447918014014776595944966104206566798789344604766153309284428852946584326288791628004907069519862885000705428010037850753061136612304373954154574808744567767708185874114964383161896442288087130347296539843857411323180224796422060412560273911847576697246288248931516560524775367036846588650800142654379728917389095772855561981227539372000611219818116323988339401654283841674686519504147605726568782986804469213338855979099249033283670025357953079622935709053778405049314724978810340382230996405883307258315379039324819037231811990457455052399078197310021813198206652041618637243868393149525645445282665943371976696849454566695312691914852987556209201722329473248021351142339896780183933577605572307218499520430402653244911942814425845767219386829267618175969052987544252765651257473229400841935139380604066499776107907411923340041617343830591847338832794737466391344377369177806622999869640238522540417125253585086620675913306970774793466470830655072975662029627646513555509764852219688937468383782635184384766130198340227797417621262763026048015223652188677562231168390506007254268867874644818721203578449644232891351763624210046755449401712586201521236362509436402966943295306845464021021246033388121126774466291345911593403604175073409090544307783285096961489807127754243091048959802083822134167956211008652870848471634352475115402111086318441712772403769289341689082325790144332078299453168584064050637984536918852582807338107804094821583451204398493609370452732045094868214454519452588555927411884211296884620486818595995750200866955347394455976971189413367346169289184691151852010939745917831483442937096069598784746046258343832374835236874023031228190887516673861426571250075923766025024895036050678982328050843193284367485922721485074634067442721152760227496869559532333916738450905699373841754536818265500169474165848833556841342945116812611027517896478113126234362995656172809916457991521169995965692461905943450539734179476747682050912699552183306521911596840508378803267355738848095424530488425903771380461808243663959686183784708992704846512641363509243273301120844641132379984039103151385419665572854719696358807657791067225109409923380318108090897060095057459366956109721956711264494449030227576545296974236194454956379730585851333141258486640021348621940882789259051890583041291980118483103539963345634646020190572796095784531275837135435835549136974163886607975045106729323144700310482816534445109934118558567901663794676054330505714380298816955616325482574908834957326578025141638198067841297670830916779597400552301697714301565117948125660877390892588581574751120653238471886932470161182480530260577601824142260888943257216442895845722546401885440128807100664611142221794778315332003146145958824836588529799626647836185180939360462539731081392070110559191176576397008113894001435568060629379003762531107337546231207465008679757407904809066489184206788743949669479886901412051716536435016472735604516272985546862149463993764597364657269927038730942941530594584382344203876040551368924020273345462069187528892745577148937041293881945229039447984116471667946176955322317979979984531617412594532824493233769502894116584731679873065223414047018177307900193034364584387566777316414508205910322112913061009479983849515049535168865380322250458291413034262938973421380012321249101111386881581899962437989398334158548555865929135299558801096276026299128025287291600593473759735516008680174229205830175793346057704496142420319849371036613028545212409688819887122677882703901761756068536204779652633353530513448026387997846530070772105635134003864094143171012094827984161160876733336676975942242022686020229394135506363088398530872470850549859004579773478185762741042597722645593207127122019100202825131725453502892228272626723158633067932484442823475679601346092579979019625387939953728725930342912673619845145714031589744472234207952731158299050940064955405473073995516655882469375


28000063226650373842539816723077810262684406500457704774979931367014325114249099396752647459674017879177010375427775605961937740809602088716776839409117190674795645531521846806411624567460233577844214794506441327513417944527670190408550947009227810892032327446882579072624725578915040036670431095718980227539783123693496787068620758132263924245085089200780448661927911678456086968515366667853830495847046867381683540403520441108948554690249937385093830571422790506013096153726163136228686234165628495918156730612625312413868100248081155780198911686028023177788409058979974551246840658112365913313812391417570809802679820740190889506117387978398363622216819246724838734972120672635324986057406085363461831641828257921568430200531245430713001528293618582228126814864008676482416231058469664407224396884982870107909556256615791134168967268455469047200430032099176118340213280774098554046222770081207884155894855886376975455907936901337133335121159867310095738987481627494630124050813795478629929047148270269037230334656556041058567476010912872947016210099275805547327540832085437474584966048283519431198268987696576419710014611772867882291163610983175700092197191768944539799086689998986766710892436259262199425191884339360847610869630919386760728339933739431344229892060958271001195975006731325975343185451879702317102738930428842266424195945741664011673342559190037317046978934146958804520826977274010499092579830456090170833078232012556031764030472594810682597459519562199659205371854035393630629274387521252877367522541115753101956887305388613681434768527031486316123210596522280012866200722455839480342093208709888957458891002415205949770514673377957523074274851985946575752939259030690238809838008688804603257537017110597983980371414480734466599651225821779359583588065070882785680298768770761219172381732362864827439282006895317550309617964161935331505244494728285376457748073578303373643530516217202499889002723517026452400056195305092049131969825141178352706179278451892549580035332152224294761670698203957236857623414945395849290139103936134680450887548540338225240185015420081723261449102035122994104163701307435972920430268706394833328272831856258863216066228758905996156675538679754433520456743551358576500309053873199577546508159776726581061403203016946422257871566931416000296120433768992666337081835358134291506631513555977551954582953084405819852500210620856407167291635079413902931239357023340670523350877614556328807867061771357857667212757200180776850400409487664444585436705778394261622849817514074560760854495129724516217963246808436728968650616296953849544205025166773173314126382484553908223934238197182672203014860544249075502381155316690793980317012278188566387916963470152669506526455867821596361467264678247776282079152810970831309549731833982500572373520587601859500056239598048350448756958042054454369641033783202245376868142099792411462319328086627182110318996800030268079236741211220967252061619192590442343615867747962697933240912404711430648953307984412073100452210438998028035535714523944227559255092217279738689554558006777564933287754616358041021909701051501954015843967474008799120752981969784139912488787204448023480324454734284057987721981982601400430759189722438411010271210615616944951786570521656604499317056159448844686446732110662752943928314146961128244120797726399567178608485786681745478454096883867506041446675402616120494660484799720821925177229205371529567938708349149371764351044346924459009364478669001791219857642108986244794152403236883041713991453483299040014326800267282474974619135394792536624944746386784088017339850688067924508897586734779337598723910688173002964859335346464628229202486741402449608713836229602461651695533608843061867963665971743340869350847139222250136099056654257724492917804765731822828573186545069521785918871539238554848918942534125280003


#10
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

View Postdani.user, on 03 aprilie 2020 - 17:47, said:

O inmultire de test care nu da ce trebuie:
Pai nu inteleg ce ai inmultit!

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007

Quote

30194693372392275795306584466152797092952625113753405153293729035682348226419571105699786130671891263137594431024244207919308344046717456026994714485976281452872898009309626457874010066771097767331187914961020838365218868437035152743921840969694911272063890064436399061250237351873261326081350507656495257372214284796059302603427113900752530670266713676070911914085825837356528289349543700967311029409825611428961686849778393576418046581057208827359919363431544018726449934221437804235423788427884676679666300800443928601687086664874760860022139135155167726283736218823489941735199826787339737326554917094353946176664373261314191724675698243403108431738319007603230943688734225864690377595549784316593487915900033497144478764185613479678087064825651287825878817995315926120183234673407131496725229987277963875280396075564369825882622785502374910760931669606416702544614645575017535396722169873661039686710681821825562240127394688447918014014776595944966104206566798789344604766153309284428852946584326288791628004907069519862885000705428010037850753061136612304373954154574808744567767708185874114964383161896442288087130347296539843857411323180224796422060412560273911847576697246288248931516560524775367036846588650800142654379728917389095772855561981227539372000611219818116323988339401654283841674686519504147605726568782986804469213338855979099249033283670025357953079622935709053778405049314724978810340382230996405883307258315379039324819037231811990457455052399078197310021813198206652041618637243868393149525645445282665943371976696849454566695312691914852987556209201722329473248021351142339896780183933577605572307218499520430402653244911942814425845767219386829267618175969052987544252765651257473229400841935139380604066499776107907411923340041617343830591847338832794737466391344377369177806622999869640238522540417125253585086620675913306970774793466470830655072975662029627646513555509764852219688937468383782635184384766130198340227797417621262763026048015223652188677562231168390506007254268867874644818721203578449644232891351763624210046755449401712586201521236362509436402966943295306845464021021246033388121126774466291345911593403604175073409090544307783285096961489807127754243091048959802083822134167956211008652870848471634352475115402111086318441712772403769289341689082325790144332078299453168584064050637984536918852582807338107804094821583451204398493609370452732045094868214454519452588555927411884211296884620486818595995750200866955347394455976971189413367346169289184691151852010939745917831483442937096069598784746046258343832374835236874023031228190887516673861426571250075923766025024895036050678982328050843193284367485922721485074634067442721152760227496869559532333916738450905699373841754536818265500169474165848833556841342945116812611027517896478113126234362995656172809916457991521169995965692461905943450539734179476747682050912699552183306521911596840508378803267355738848095424530488425903771380461808243663959686183784708992704846512641363509243273301120844641132379984039103151385419665572854719696358807657791067225109409923380318108090897060095057459366956109721956711264494449030227576545296974236194454956379730585851333141258486640021348621940882789259051890583041291980118483103539963345634646020190572796095784531275837135435835549136974163886607975045106729323144700310482816534445109934118558567901663794676054330505714380298816955616325482574908834957326578025141638198067841297670830916779597400552301697714301565117948125660877390892588581574751120653238471886932470161182480530260577601824142260888943257216442895845722546401885440128807100664611142221794778315332003146145958824836588529799626647836185180939360462539731081392070110559191176576397008113894001435568060629379003762531107337546231207465008679757407904809066489184206788743949669479886901412051716536435016472735604516272985546862149463993764597364657269927038730942941530594584382344203876040551368924020273345462069187528892745577148937041293881945229039447984116471667946176955322317979979984531617412594532824493233769502894116584731679873065223414047018177307900193034364584387566777316414508205910322112913061009479983849515049535168865380322250458291413034262938973421380012321249101111386881581899962437989398334158548555865929135299558801096276026299128025287291600593473759735516008680174229205830175793346057704496142420319849371036613028545212409688819887122677882703901761756068536204779652633353530513448026387997846530070772105635134003864094143171012094827984161160876733336676975942242022686020229394135506363088398530872470850549859004579773478185762741042597722645593207127122019100202825131725453502892228272626723158633067932484442823475679601346092579979019625387939953728725930342912673619845145714031589744472234207952731158299050940064955405473073995516655882469375
*
28000063226650373842539816723077810262684406500457704774979931367014325114249099396752647459674017879177010375427775605961937740809602088716776839409117190674795645531521846806411624567460233577844214794506441327513417944527670190408550947009227810892032327446882579072624725578915040036670431095718980227539783123693496787068620758132263924245085089200780448661927911678456086968515366667853830495847046867381683540403520441108948554690249937385093830571422790506013096153726163136228686234165628495918156730612625312413868100248081155780198911686028023177788409058979974551246840658112365913313812391417570809802679820740190889506117387978398363622216819246724838734972120672635324986057406085363461831641828257921568430200531245430713001528293618582228126814864008676482416231058469664407224396884982870107909556256615791134168967268455469047200430032099176118340213280774098554046222770081207884155894855886376975455907936901337133335121159867310095738987481627494630124050813795478629929047148270269037230334656556041058567476010912872947016210099275805547327540832085437474584966048283519431198268987696576419710014611772867882291163610983175700092197191768944539799086689998986766710892436259262199425191884339360847610869630919386760728339933739431344229892060958271001195975006731325975343185451879702317102738930428842266424195945741664011673342559190037317046978934146958804520826977274010499092579830456090170833078232012556031764030472594810682597459519562199659205371854035393630629274387521252877367522541115753101956887305388613681434768527031486316123210596522280012866200722455839480342093208709888957458891002415205949770514673377957523074274851985946575752939259030690238809838008688804603257537017110597983980371414480734466599651225821779359583588065070882785680298768770761219172381732362864827439282006895317550309617964161935331505244494728285376457748073578303373643530516217202499889002723517026452400056195305092049131969825141178352706179278451892549580035332152224294761670698203957236857623414945395849290139103936134680450887548540338225240185015420081723261449102035122994104163701307435972920430268706394833328272831856258863216066228758905996156675538679754433520456743551358576500309053873199577546508159776726581061403203016946422257871566931416000296120433768992666337081835358134291506631513555977551954582953084405819852500210620856407167291635079413902931239357023340670523350877614556328807867061771357857667212757200180776850400409487664444585436705778394261622849817514074560760854495129724516217963246808436728968650616296953849544205025166773173314126382484553908223934238197182672203014860544249075502381155316690793980317012278188566387916963470152669506526455867821596361467264678247776282079152810970831309549731833982500572373520587601859500056239598048350448756958042054454369641033783202245376868142099792411462319328086627182110318996800030268079236741211220967252061619192590442343615867747962697933240912404711430648953307984412073100452210438998028035535714523944227559255092217279738689554558006777564933287754616358041021909701051501954015843967474008799120752981969784139912488787204448023480324454734284057987721981982601400430759189722438411010271210615616944951786570521656604499317056159448844686446732110662752943928314146961128244120797726399567178608485786681745478454096883867506041446675402616120494660484799720821925177229205371529567938708349149371764351044346924459009364478669001791219857642108986244794152403236883041713991453483299040014326800267282474974619135394792536624944746386784088017339850688067924508897586734779337598723910688173002964859335346464628229202486741402449608713836229602461651695533608843061867963665971743340869350847139222250136099056654257724492917804765731822828573186545069521785918871539238554848918942534125280003


#12
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Pentru inmultirea celor doua numere cred ca nici macar Python 2.7.17 nu produce rezultatul corect,
https://defuse.ca/bi...-calculator.htm
ultimele cifre fiind: ... 401 980 947 408 125
Asta nu este scuza, doar ca nu pot utiliza Python pentru testare.

vector<long long> one = string_to_vector("0xFFFFFFFFFFFFFFFF");
print_vector(one);
vector<long long> two = string_to_vector("2");
vector<long long> result1 = naive_mul(one, two);
print_result(result1, std::cout);
return 1;



Rezultatul depaseste valoarea unui "long long" cu semn,
solutii: 1. schimbarea bazei din "const int base = 1000000000;" in "10000000", doar ca din pacate impartirea nu va functiona cu baza asta.
2. schimbarea vectorului din "vector<long long>" in "vector<unsigned long long>" doar ca atunci nu am mai avea semn.

#13
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Python 2.7 are 10 ani vechime. Incearca ultima versiune 3.x

Asta-i rezultatul cu python 3:

Quote

845453323536304723895528100677128998499887385988803636875573543542194569552973998864370223071338288250429440939697782339942578138435377699592122959068146653910120866731054916338601805030253851283414171244281373709458267724422652683752685895587405745627549157378249105583879568514825420862267004225837841604240700389201242862605637349242988701882200857701876701314060952662141112151633109783033425796615915854227949692173805393231925417088113830760875086246528514651395270035650698572554413511291226376687756160312427815653899224628741352777635530731050979301490517400101530884364271542529499109964484859284542477895813083613257707444075302243991423147441731335408430661135343539959340877048656361297198868287536770954884776992881125655592659727188822625803831056686766857886705547998810296767101752037876040195122015340502014560770651638756909950715059993422236417124881314285572665754371253774907022221300529938796946833846049600144393682939594199333266397155077873980437513011150133730285046667336424503154880249934235092691655542597228140988095424064146186399237698615701278940905843984028318739918340007059608076240117645030814583180868338063249125632553972106184892182397005329899499841642944279396921691838865381345076570004917103222327818649083983345346665429137726572689929360762245673281642633898461890470505705286014818534828452126949062132232922012694395892305177195727893888631815848834434522301058433194849892209874408319979560226663351678477088526760704721154354387187929443766406028691416885017500637734125062067743963207342711556840880062382772139358811339143678397668676039766540780821954000996268830953320311796542307147280371962369974337915553360393532777847626382580690495631577014225441771362685845071321638018352647302833684016875150757467116653605957648499157148092410455365494829938297193124182569694464064305290467658703191501387289381803836366230167824312418770415878684610807055963993759591284336282404713602856959502545545113773564629234317480423896067880530792244990278685630939857358391723990635278742454253640290067323406954891705079064233206604370169619564667078114011148534980249545664120074848826795666444142843609458253871122823361067302406841144291978256272932400619621681140004609571480521006015155112621086092151115706296228785844718697445627540296139114542592498996045555224330171477413816638364229463909638166813362491319561626600926307567402673125473166014594929514434996913890662054717811174684612543106254997276114384223609389765254328877135175072302992273985294049535579806670042824717718537126585614209142447409827649369896389290726796670760899542622145654514327163514871143194260381789770524147691276543014024824182709985969172780258999637037188388651474327047423121970358122614665411673889962280038095308447968429426632329146434572100206960408886002765596376281469928525203048147231812635170601184609259034612851182339058451665948373775025093223238108330189714367022788517111073436222904370395022332764624101224225199140117275599816293188397816961833823919914902047296915583579498017714812263552122680194734233636045880470795097145598773487144903602329792347366417358829891805216970204340614094601153319036441444943272757217616552826106465983810005564216217393107344436381908652212837961397325627899885550472856313045660126393795194673547040798262324255577544610773906182174847784074140784405222452060311901407602558578950753743014229831967280957322002597520422948819371000130667120329501579088410559186001039491723315580161188017371372132387506949200792462059649382702720727119431316502758750180460673463341420120159728270092585855861274454379265237704338167956973976954549918799073622611829022543513337654441857622613186861601029759240579583387194239017952976975586138053825788586963886102155395761759690636451017445820701618614120592325574537179076495719736947158693736220069757322810364036882375445451694271072601300097260184057423998125218137102373125968827780398252936111501741140072617742513976769393527443431050190085175480415948072808470833309516645774908696380058414541579316453860215978676452834824967033061875890921931917750323556781992842005113164406240538431025835230541862350511459983807746212467374794985466729156364899706938468111869507203453732729777921970626684470188449791165941321561363134274687386989051183046015319899887766138491087973250600826102800824340158146642540361267760719600241786663476930477811800146759119261972914921624027632413912498382115808612374481936163708712929972663445914758903587442058633225337375171971553808978460371588131654831875780735694890908428939622417645600017138703341679761134061917723324447760028174930460725223667296694800077768551537285260440158617593763355577111091067542043549911891918409215363659513772304294658493448924406816752069945261043866328471940704240317818176475931024808849806076556815143025617895721289602739975678364620702337164232928581973137018511291674490064267736679648946480082223483764653629041783661164918201560016209810970907584490689296543539824036100967968312179065844218794980135700821037526308921655072029860353144505777400946866608272006728800326675931876000221190820312836675822454260723479603433893216663852863424305214697042918410642112824097238977583068721601923400672480799465789320066584794070178329748552603501527060346336264461835232952936649210775576932296139679660302552553522473424965972028999393366151750966586625137695383047817502855257415055813658774312725451280839735340196434367226385069065134026161459514433103221141424829339511933788186809162916621963366581882153451471671891922245924361269728153758301105185380957771415360840882829784521696818739750204120991449860849055316857528670692219960049118135586352718166321815780606568999023126554485233039301609394520202878904329759860223476788549031995384904521583418571374968953662286512236807666904558149885128325404534765136743171213546470604631971440241879320705320632214171986552404043680196005715103642967405968425765689035677134187363094674835567035984395858548148485319070422366077228183961021172308975485750178433686701195736230426017945500077679891017343674118657120814316282593206489068694201806279896149579258123639267040611257779872334470552439908304775208289799056084667143725454646212228090571470316555623020088524871646723797571286035301009611972680863309685458054382313221844868916759712408366081421311903723421592290913620063863811069248180379689911719090142698251623603101429109610365762164176254691945903042888531951485806942818189254905541236862137748369029390763749905068002556776124667230414163736576425770544495683456843452180258827391214015228036320069411762866461636935391114061980824024722343700181850687416775925271249691328719531689722315504900958157561424157972346687818453832579022140470191355287738553549976274183046045468067619639512250865305036246322097240877303268438212514522575259215531135512703572773230908746728818049511419998299988572672848070071672003062933658120868960684155736131693378531973590876837949325678901818321001671993714916898998292265472431561344561696622652983994320752811372475393792260885450914851163108052653064716569908802397983897348768328905083262627297398333124462261369702164292138548498477250425111890381892041716517866806603387875859887720574990635654281471453727981362675479134814849536315504537089397803906364815251719202125946327594821056869927989246181428525578617340476180451042278482860998404994189063368613106348787194345660681080664665288778154945988959840178522770462409263217314047371928772129079295778094856540160053429589581336294219144502065282672150275725241033288702750134528580007775555416877775542474169571103342044135110508798357601716772518095211591297971130552216188031295641436601141208548735612915180346908747482141517316652067526195019382237954019609790625097408612446900217407691004037716210355547832021673542939055668611443982707463694103158927281374662543374574008339125711267916973167766371974870054144308583367759699746661868253193341746627734297380150585398415871789990514235423527445548566760553372397390184573450216786433684841738004381171232646407975553681871230553584142963022779869644708302952155578789310660476367564607387982056402091137183373161164237708969054450919138554023349543253801231346095407073154225688384057350305765112249474687933901543185592025962343844090689564533117292986560808863880087187148286537853116428756853519512565966060137393544403524512165410864560487980496892911904043953400866457355330277768957863480393983999478412833099407608883673975070012023620619654597056400360979421549204278400277100761654947428508216286527030896289498903862882967693506465811486417894968343205356555771731025940199962275401980947408125

La care rezultat te referi ca depaseste long long? Ma astept ca fiind vorba de numere mari sa pot pune orice numar (sa incapa in memorie), altfel as folosi direct long long * long long.

#14
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
La care rezultat te referi ca depaseste long long?
Rezultatul partial (a unui "element"), alegand vector<long long> combinat cu baza 1000000000 (1e9),
pana la urma trebuie sa calculam (long long)*(long long) ceea ce nu incape in long long,
daca as alege baza 1e7 nu functioneaza impatirea, si impartirea este exact ceea ce am facut mecanic
cu un cod reimplementat de pe NET.

#15
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Stochezi int32_t si cand inmultesti intermediaru castui la int64_t.

#16
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

View Postdani.user, on 03 aprilie 2020 - 20:25, said:

Stochezi int32_t si cand inmultesti intermediaru castui la int64_t.
Pentru inmultire/adunare/scadere functioneaza perfect.
Problema este cu impartirea! Am cerut ajutor deja aici:
https://forum.softpe...numerelor-mari/

#17
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Am gasit implementarea asta:
https://gist.github....ak-garg/4007974
In codul sursa cpp trebuie sa adaugi:
#include "bigint.cpp"

Exemplu de utilizare:
bigint div = bigint("301");
bigint divby = bigint("28");
bigint res = (div)/(divby);

100 % functional.
Pare sa fie si mai simplu facut decat ce am facut eu.

#18
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Da... Unul din motive fiind stocarea separata a semnului si nu indesarea totul in acel vector.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate