BigOperation - operatii numere mari
Last Updated: Jun 20 2020 12:59, Started by
MihaiProg
, Apr 03 2020 13:53
·
0
#1
Posted 03 April 2020 - 13:53
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 FilesEdited by IvanMihai, 03 April 2020 - 13:54. |
#2
Posted 03 April 2020 - 14:17
In C++ ne place + - * / ... in loc de add/sub/div
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
Posted 03 April 2020 - 14:28
Quote In C++ ne place + - * / ... in loc de add/sub/div 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
Posted 03 April 2020 - 14:50
Vezi si https://forum.softpe...8#entry25962566 ca inspiratie
IvanMihai, 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
Posted 03 April 2020 - 15:44
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
Posted 03 April 2020 - 15:53
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
Posted 03 April 2020 - 17:19
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
Posted 03 April 2020 - 17:31
Quote
void finalize(std::vector<long long>& res); Cand ar trebui sa chem asta? |
#9
Posted 03 April 2020 - 17:47
Atunci nu trebuie expusa in headerul public.
O inmultire de test care nu da ce trebuie: Quote
30194693372392275795306584466152797092952625113753405153293729035682348226419571105699786130671891263137594431024244207919308344046717456026994714485976281452872898009309626457874010066771097767331187914961020838365218868437035152743921840969694911272063890064436399061250237351873261326081350507656495257372214284796059302603427113900752530670266713676070911914085825837356528289349543700967311029409825611428961686849778393576418046581057208827359919363431544018726449934221437804235423788427884676679666300800443928601687086664874760860022139135155167726283736218823489941735199826787339737326554917094353946176664373261314191724675698243403108431738319007603230943688734225864690377595549784316593487915900033497144478764185613479678087064825651287825878817995315926120183234673407131496725229987277963875280396075564369825882622785502374910760931669606416702544614645575017535396722169873661039686710681821825562240127394688447918014014776595944966104206566798789344604766153309284428852946584326288791628004907069519862885000705428010037850753061136612304373954154574808744567767708185874114964383161896442288087130347296539843857411323180224796422060412560273911847576697246288248931516560524775367036846588650800142654379728917389095772855561981227539372000611219818116323988339401654283841674686519504147605726568782986804469213338855979099249033283670025357953079622935709053778405049314724978810340382230996405883307258315379039324819037231811990457455052399078197310021813198206652041618637243868393149525645445282665943371976696849454566695312691914852987556209201722329473248021351142339896780183933577605572307218499520430402653244911942814425845767219386829267618175969052987544252765651257473229400841935139380604066499776107907411923340041617343830591847338832794737466391344377369177806622999869640238522540417125253585086620675913306970774793466470830655072975662029627646513555509764852219688937468383782635184384766130198340227797417621262763026048015223652188677562231168390506007254268867874644818721203578449644232891351763624210046755449401712586201521236362509436402966943295306845464021021246033388121126774466291345911593403604175073409090544307783285096961489807127754243091048959802083822134167956211008652870848471634352475115402111086318441712772403769289341689082325790144332078299453168584064050637984536918852582807338107804094821583451204398493609370452732045094868214454519452588555927411884211296884620486818595995750200866955347394455976971189413367346169289184691151852010939745917831483442937096069598784746046258343832374835236874023031228190887516673861426571250075923766025024895036050678982328050843193284367485922721485074634067442721152760227496869559532333916738450905699373841754536818265500169474165848833556841342945116812611027517896478113126234362995656172809916457991521169995965692461905943450539734179476747682050912699552183306521911596840508378803267355738848095424530488425903771380461808243663959686183784708992704846512641363509243273301120844641132379984039103151385419665572854719696358807657791067225109409923380318108090897060095057459366956109721956711264494449030227576545296974236194454956379730585851333141258486640021348621940882789259051890583041291980118483103539963345634646020190572796095784531275837135435835549136974163886607975045106729323144700310482816534445109934118558567901663794676054330505714380298816955616325482574908834957326578025141638198067841297670830916779597400552301697714301565117948125660877390892588581574751120653238471886932470161182480530260577601824142260888943257216442895845722546401885440128807100664611142221794778315332003146145958824836588529799626647836185180939360462539731081392070110559191176576397008113894001435568060629379003762531107337546231207465008679757407904809066489184206788743949669479886901412051716536435016472735604516272985546862149463993764597364657269927038730942941530594584382344203876040551368924020273345462069187528892745577148937041293881945229039447984116471667946176955322317979979984531617412594532824493233769502894116584731679873065223414047018177307900193034364584387566777316414508205910322112913061009479983849515049535168865380322250458291413034262938973421380012321249101111386881581899962437989398334158548555865929135299558801096276026299128025287291600593473759735516008680174229205830175793346057704496142420319849371036613028545212409688819887122677882703901761756068536204779652633353530513448026387997846530070772105635134003864094143171012094827984161160876733336676975942242022686020229394135506363088398530872470850549859004579773478185762741042597722645593207127122019100202825131725453502892228272626723158633067932484442823475679601346092579979019625387939953728725930342912673619845145714031589744472234207952731158299050940064955405473073995516655882469375 28000063226650373842539816723077810262684406500457704774979931367014325114249099396752647459674017879177010375427775605961937740809602088716776839409117190674795645531521846806411624567460233577844214794506441327513417944527670190408550947009227810892032327446882579072624725578915040036670431095718980227539783123693496787068620758132263924245085089200780448661927911678456086968515366667853830495847046867381683540403520441108948554690249937385093830571422790506013096153726163136228686234165628495918156730612625312413868100248081155780198911686028023177788409058979974551246840658112365913313812391417570809802679820740190889506117387978398363622216819246724838734972120672635324986057406085363461831641828257921568430200531245430713001528293618582228126814864008676482416231058469664407224396884982870107909556256615791134168967268455469047200430032099176118340213280774098554046222770081207884155894855886376975455907936901337133335121159867310095738987481627494630124050813795478629929047148270269037230334656556041058567476010912872947016210099275805547327540832085437474584966048283519431198268987696576419710014611772867882291163610983175700092197191768944539799086689998986766710892436259262199425191884339360847610869630919386760728339933739431344229892060958271001195975006731325975343185451879702317102738930428842266424195945741664011673342559190037317046978934146958804520826977274010499092579830456090170833078232012556031764030472594810682597459519562199659205371854035393630629274387521252877367522541115753101956887305388613681434768527031486316123210596522280012866200722455839480342093208709888957458891002415205949770514673377957523074274851985946575752939259030690238809838008688804603257537017110597983980371414480734466599651225821779359583588065070882785680298768770761219172381732362864827439282006895317550309617964161935331505244494728285376457748073578303373643530516217202499889002723517026452400056195305092049131969825141178352706179278451892549580035332152224294761670698203957236857623414945395849290139103936134680450887548540338225240185015420081723261449102035122994104163701307435972920430268706394833328272831856258863216066228758905996156675538679754433520456743551358576500309053873199577546508159776726581061403203016946422257871566931416000296120433768992666337081835358134291506631513555977551954582953084405819852500210620856407167291635079413902931239357023340670523350877614556328807867061771357857667212757200180776850400409487664444585436705778394261622849817514074560760854495129724516217963246808436728968650616296953849544205025166773173314126382484553908223934238197182672203014860544249075502381155316690793980317012278188566387916963470152669506526455867821596361467264678247776282079152810970831309549731833982500572373520587601859500056239598048350448756958042054454369641033783202245376868142099792411462319328086627182110318996800030268079236741211220967252061619192590442343615867747962697933240912404711430648953307984412073100452210438998028035535714523944227559255092217279738689554558006777564933287754616358041021909701051501954015843967474008799120752981969784139912488787204448023480324454734284057987721981982601400430759189722438411010271210615616944951786570521656604499317056159448844686446732110662752943928314146961128244120797726399567178608485786681745478454096883867506041446675402616120494660484799720821925177229205371529567938708349149371764351044346924459009364478669001791219857642108986244794152403236883041713991453483299040014326800267282474974619135394792536624944746386784088017339850688067924508897586734779337598723910688173002964859335346464628229202486741402449608713836229602461651695533608843061867963665971743340869350847139222250136099056654257724492917804765731822828573186545069521785918871539238554848918942534125280003 |
#10
Posted 03 April 2020 - 18:20
|
#11
Posted 03 April 2020 - 18:25
Quote
30194693372392275795306584466152797092952625113753405153293729035682348226419571105699786130671891263137594431024244207919308344046717456026994714485976281452872898009309626457874010066771097767331187914961020838365218868437035152743921840969694911272063890064436399061250237351873261326081350507656495257372214284796059302603427113900752530670266713676070911914085825837356528289349543700967311029409825611428961686849778393576418046581057208827359919363431544018726449934221437804235423788427884676679666300800443928601687086664874760860022139135155167726283736218823489941735199826787339737326554917094353946176664373261314191724675698243403108431738319007603230943688734225864690377595549784316593487915900033497144478764185613479678087064825651287825878817995315926120183234673407131496725229987277963875280396075564369825882622785502374910760931669606416702544614645575017535396722169873661039686710681821825562240127394688447918014014776595944966104206566798789344604766153309284428852946584326288791628004907069519862885000705428010037850753061136612304373954154574808744567767708185874114964383161896442288087130347296539843857411323180224796422060412560273911847576697246288248931516560524775367036846588650800142654379728917389095772855561981227539372000611219818116323988339401654283841674686519504147605726568782986804469213338855979099249033283670025357953079622935709053778405049314724978810340382230996405883307258315379039324819037231811990457455052399078197310021813198206652041618637243868393149525645445282665943371976696849454566695312691914852987556209201722329473248021351142339896780183933577605572307218499520430402653244911942814425845767219386829267618175969052987544252765651257473229400841935139380604066499776107907411923340041617343830591847338832794737466391344377369177806622999869640238522540417125253585086620675913306970774793466470830655072975662029627646513555509764852219688937468383782635184384766130198340227797417621262763026048015223652188677562231168390506007254268867874644818721203578449644232891351763624210046755449401712586201521236362509436402966943295306845464021021246033388121126774466291345911593403604175073409090544307783285096961489807127754243091048959802083822134167956211008652870848471634352475115402111086318441712772403769289341689082325790144332078299453168584064050637984536918852582807338107804094821583451204398493609370452732045094868214454519452588555927411884211296884620486818595995750200866955347394455976971189413367346169289184691151852010939745917831483442937096069598784746046258343832374835236874023031228190887516673861426571250075923766025024895036050678982328050843193284367485922721485074634067442721152760227496869559532333916738450905699373841754536818265500169474165848833556841342945116812611027517896478113126234362995656172809916457991521169995965692461905943450539734179476747682050912699552183306521911596840508378803267355738848095424530488425903771380461808243663959686183784708992704846512641363509243273301120844641132379984039103151385419665572854719696358807657791067225109409923380318108090897060095057459366956109721956711264494449030227576545296974236194454956379730585851333141258486640021348621940882789259051890583041291980118483103539963345634646020190572796095784531275837135435835549136974163886607975045106729323144700310482816534445109934118558567901663794676054330505714380298816955616325482574908834957326578025141638198067841297670830916779597400552301697714301565117948125660877390892588581574751120653238471886932470161182480530260577601824142260888943257216442895845722546401885440128807100664611142221794778315332003146145958824836588529799626647836185180939360462539731081392070110559191176576397008113894001435568060629379003762531107337546231207465008679757407904809066489184206788743949669479886901412051716536435016472735604516272985546862149463993764597364657269927038730942941530594584382344203876040551368924020273345462069187528892745577148937041293881945229039447984116471667946176955322317979979984531617412594532824493233769502894116584731679873065223414047018177307900193034364584387566777316414508205910322112913061009479983849515049535168865380322250458291413034262938973421380012321249101111386881581899962437989398334158548555865929135299558801096276026299128025287291600593473759735516008680174229205830175793346057704496142420319849371036613028545212409688819887122677882703901761756068536204779652633353530513448026387997846530070772105635134003864094143171012094827984161160876733336676975942242022686020229394135506363088398530872470850549859004579773478185762741042597722645593207127122019100202825131725453502892228272626723158633067932484442823475679601346092579979019625387939953728725930342912673619845145714031589744472234207952731158299050940064955405473073995516655882469375 * 28000063226650373842539816723077810262684406500457704774979931367014325114249099396752647459674017879177010375427775605961937740809602088716776839409117190674795645531521846806411624567460233577844214794506441327513417944527670190408550947009227810892032327446882579072624725578915040036670431095718980227539783123693496787068620758132263924245085089200780448661927911678456086968515366667853830495847046867381683540403520441108948554690249937385093830571422790506013096153726163136228686234165628495918156730612625312413868100248081155780198911686028023177788409058979974551246840658112365913313812391417570809802679820740190889506117387978398363622216819246724838734972120672635324986057406085363461831641828257921568430200531245430713001528293618582228126814864008676482416231058469664407224396884982870107909556256615791134168967268455469047200430032099176118340213280774098554046222770081207884155894855886376975455907936901337133335121159867310095738987481627494630124050813795478629929047148270269037230334656556041058567476010912872947016210099275805547327540832085437474584966048283519431198268987696576419710014611772867882291163610983175700092197191768944539799086689998986766710892436259262199425191884339360847610869630919386760728339933739431344229892060958271001195975006731325975343185451879702317102738930428842266424195945741664011673342559190037317046978934146958804520826977274010499092579830456090170833078232012556031764030472594810682597459519562199659205371854035393630629274387521252877367522541115753101956887305388613681434768527031486316123210596522280012866200722455839480342093208709888957458891002415205949770514673377957523074274851985946575752939259030690238809838008688804603257537017110597983980371414480734466599651225821779359583588065070882785680298768770761219172381732362864827439282006895317550309617964161935331505244494728285376457748073578303373643530516217202499889002723517026452400056195305092049131969825141178352706179278451892549580035332152224294761670698203957236857623414945395849290139103936134680450887548540338225240185015420081723261449102035122994104163701307435972920430268706394833328272831856258863216066228758905996156675538679754433520456743551358576500309053873199577546508159776726581061403203016946422257871566931416000296120433768992666337081835358134291506631513555977551954582953084405819852500210620856407167291635079413902931239357023340670523350877614556328807867061771357857667212757200180776850400409487664444585436705778394261622849817514074560760854495129724516217963246808436728968650616296953849544205025166773173314126382484553908223934238197182672203014860544249075502381155316690793980317012278188566387916963470152669506526455867821596361467264678247776282079152810970831309549731833982500572373520587601859500056239598048350448756958042054454369641033783202245376868142099792411462319328086627182110318996800030268079236741211220967252061619192590442343615867747962697933240912404711430648953307984412073100452210438998028035535714523944227559255092217279738689554558006777564933287754616358041021909701051501954015843967474008799120752981969784139912488787204448023480324454734284057987721981982601400430759189722438411010271210615616944951786570521656604499317056159448844686446732110662752943928314146961128244120797726399567178608485786681745478454096883867506041446675402616120494660484799720821925177229205371529567938708349149371764351044346924459009364478669001791219857642108986244794152403236883041713991453483299040014326800267282474974619135394792536624944746386784088017339850688067924508897586734779337598723910688173002964859335346464628229202486741402449608713836229602461651695533608843061867963665971743340869350847139222250136099056654257724492917804765731822828573186545069521785918871539238554848918942534125280003 |
#12
Posted 03 April 2020 - 19:43
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
Posted 03 April 2020 - 19:55
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
Posted 03 April 2020 - 20:08
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
Posted 03 April 2020 - 20:25
Stochezi int32_t si cand inmultesti intermediaru castui la int64_t.
|
|
#16
Posted 03 April 2020 - 20:46
dani.user, on 03 aprilie 2020 - 20:25, said:
Stochezi int32_t si cand inmultesti intermediaru castui la int64_t. Problema este cu impartirea! Am cerut ajutor deja aici: https://forum.softpe...numerelor-mari/ |
#17
Posted 04 April 2020 - 20:22
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
Posted 04 April 2020 - 20:35
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