-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathSolution.kt
42 lines (37 loc) · 16.2 KB
/
Solution.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
* Created by Inno Fang on 2017/12/16.
*/
class Solution {
fun addStrings(num1: String, num2: String): String {
val result = StringBuilder()
val a = if (num1.length >= num2.length) num1.reversed() else num2.reversed()
val b = if (num2.length <= num1.length) num2.reversed() else num1.reversed()
var carry = 0
(0 until a.length).takeWhile { it <= b.length - 1 }.forEach {
val add = a[it].toInt() - '0'.toInt() + b[it].toInt() - '0'.toInt() + carry
carry = add / 10
result.append(add % 10)
}
(b.length until a.length).forEach {
val add = a[it].toInt() - '0'.toInt() + carry
carry = add / 10
result.append(add % 10)
}
if (carry == 1) result.append(carry)
return result.reversed().toString()
}
}
fun main(args: Array<String>) {
// val random = Random()
// val a = StringBuilder()
// val b = StringBuilder()
// (0 until 5100).forEach { a.append(random.nextInt(10)) }
// (0 until 5100).forEach { b.append(random.nextInt(10)) }
// a.toString().let(::println)
// b.toString().let(::println)
val result = Solution().addStrings("484465324938825199318722123376065960039188515759847688854854290248147513457628818762548043734985801748093204935982024950777575277808033751093373371112639825330634836694606651393112703932673873709966035520483403282692555621868019260091496274542286873411018664623302690492040058747205117392710969726929059705793247708701430297314409842978911087282065618867172666406671733736939573922221948128386360165354806209530163855978273012425436174389576785419610891271060906058267271533359350128231831874831539636930830429753912829069108358283274689644798321239380477415899160423694928031919812227473585783737990596517794327301880810192297486979094032539723774962130740235848431685163243297360202521148112474664975632999757842518977297707662052348687234435015136011935714021241786267314248989524311769555651270132966563508670797608802210689925334507975179207717311487455175874464953121831264696839170260930019126519969445236258050733399295023275878394759828203676627311067934481289075711360260689064567767730934080804674255855707011519579397412232702043356246578261916974246468291789523673102703437849421887329648860032652922014029734195999043342012793533347430333078994348651719017151377371553195837824649213623222138662613083889521503483031656360287696410258045680756709838623355481040395627491866105179918089489280257320455010565612864039088015980399108334869070891976945682144612246283199959384815689883340984520921345128599139859940296413835906817378417685285332630393070315755782832857087001500665924091512948492234733949852596843984189809771216191331245372122925638570716560445811223731671800537033800981971232168430701703748104453625342348777991625598458261416665019316547631669725039080905165817145068383945240440371925537450152585984812741129479665802340897155982844346075107647220476995354256278685709589968564574192562555529840232671487069965643168785502518685029875046038037104107456352530617944789371060346459914798255315944535257865979593759509580946821041531028772291562593719246248994421896361365804219523768655799103378461098820004129866387577584833356815789358446173384949930203019785264459807693324084385615847957256132313993398834823581921912222966583749272829777575235366578419066377528715750925803559904190754613521278567329596923161681304485364311504629601066189047089436632522251097872614300238031215425297190012106329833917043657217257851496433163611610281996019998558826564713822074731785593823868063181473246582024785365505532654512827547163237676056807933073524212376820539896755436192989656977234880663186571113187492806595203753463009898257932993233707756442661063206649624984943851219481567633107418664966292588284600165334026623019385076739145502212521165078186214576767212321546011620025326765333042798131176316184588213316485922701976248525253551702207618543613607872937150219755660214014659892137224933474893894317013558147244007618306095057099069589811045575253606816585525425964499994595541175528145018927636620127981242881791046904305779730377522947986960892491408156125471478176807663912541918301163989652019458922798905714814041707000151483374821574332155376403497323826535408880729359914535899438725150500919895092874773389337438020418688196111976430931181428449871629742023489656062090053623431713352275777688137047527060921882070349609801949167092719374926034863593146933462373696110439938051996131219117012927763243063693337475988719605937179182579687634171317202539112616061895936981223612490795312929701359642316508323094887249182985686304630344319069164060790867786079226221222407515911168370734457599822101913455445090500872150851798129109662115362440230549432201308189246091993191230772906245239012088453353152568191893476330211538876571491873937375028292158819756829293717870016119569403411030184177183851459287261452133683186462517702127548996102027898793578605347516819761325422748071675592753000365390019378579113667779216356078230706260932373737433754538780822839878820916470252908331602267176934755440703406077334261194360769853129643513345196638839717063254692436669537018582034276792468235648451652908230915841629021760695661691807814962830360396455675243765456127766573110725321238234650603165391346129401030760616820813806754339294082878686015154239901555592870485736311221450987433791038126343178886564230729271501858355206777926139733174552275258189964727182139662550062760679015451056408289826862525056616849422567889269366333662336835039339361484671233070019146791605162184032857873499425179684929619276397375003391648303262459696653174163312089868229224066463858439186353590775051511783523148689223543952292901435913426390882056453295968932929701278852516739538060828645076326968071794981505432602251031017377776989273189786781058816858779432594545289395101070107096876947091297744972514883985105584567378350629562868702581331070543891336715745054341984675350820963397422978954167370715244405043853729632614116176353616908037053750228850893551478424756553685102744594195814282432278310538162913319912007584756050782252065464422215869397591430863761889374689600617062883401387404340907751000198270494906151099846716490050026307969918640255940636521", "430229588711198817746951074818186811475455136775558345444835638092415525670159439206421350387431843643504251036149261241233053902169798700580010003925036639610137612501207064261723381557672654127282190907072403830718813806031633811878948576017894649771901666906367278997243154108599503826702006925203718172985131546824774416050095318316155997605194372057951548774390758361571507762530925968513033907757391316749258841825723816582481036829668923393776418265667042647750725273395605268908759528567390550243308099019021688984356657998925866100537691978806467204501366593935150862567288078756373757055243982920160832878965257107937410116177477858523324897677477039970051578945368768015079838295764610401107118182176929784368265144488989505384692882953774223625347045690662719976844482704140142208659495684186772205001908507204942580239029863148472185420269360478816475692157559601878111395487037377247878096078727926039359071890290879834110005703210031130598317135668379769024326206377618378263724272619890784489071127791013215464467653761431060029344818001140585651809493407231116452488582038592242750483797841639283751058832694717265580340832958185059104617624542637906876137976167372736726354801608945723339387316607849345788712817283924350130317394169488791029029640571984056024137861343597768594443467548050415625476826398719259741843834902890933846260472152604924119503256387912793843559990826177192986011305553373431040750773080369936574699014517368672684542042695638342875671055687004866027716637118717828907565457169363408198991684733553589921512708838097222081007338420080466753505956953968672821027722068125550321001483061025403569683037532870433235692017311381022339506751622308712856321188140828078921453815757784608394035064688095177056139377146445231524400637533367553958960921714100663565779180497458175156180172466471052378547359067059634385757312086918409480172903530063134591824904848362183566130963225345322298792207667835040470051989746074912521064429666736831840593949070630835970723938664982261046099147731504914648746497706606385296990558858252368900316122286030955705620861283692805060523446813229240673864538758313807100387385398993231570696117216335038992240590190452028220904977765799857373945188262077202132858822252482768288810330698080763397522849234485183184638568956449976970776785184851352096125327617346822596909173333294359026568083763456663715067466941032802847710242440749178985370103561859897307734423146249639385572876565619242085396225758320078143688443665401958332327723607270853604199480705361518406120854555427819267068580172054286627681846380853494430632968717205438035455817511617656478087294445069574473632284616737309774589966877351737525199030698777996085972292867662515009072551285281092253134197311013108576763102768787340895074827465935395558700403781618421772639659806214605721944899469509880231206912938193411237387233191979555452926065336379409607095940750870501835073441992135763637854358848667804119336490308184902764313820249473072798007229625687301141243153296111368512695891527943199537971765236217412766229792335215730264428346984788429190606994932928957369688281172949500061740654209216035652672639102235957942016893843131355166071067856682009194926329250433740404508690852516307558771249533513051241919940385845793756362657654023095505842966926487952100223670668303856206550862623763726671767690575915175194515823935154522596841677972890089011252033866598097639610108824943246954672247325959661668589141627005893901084567471798201130804639530538061761684327244094836763408093480863803398543026433499308688436176406507965800630021697142997134402269750269934520261691795164095852337595251354784825114316225875621338530088377365957590254752598081919989929082597218890261420604437132788296759278672675617070103233966758453784905149021228566294112646326305985065848192101567755265015991359263165825732560739271255735393810475390603110950217157140926845883434797436439374423934286568467467902939225699918065972388588450262645675662314895925099193190351396941409518213314512232967700536092840358897502541062120317366990606569432883781755227149644207130377826197224210597851925038147226932434676118990503378373318493339894032987560592158137845113514547378884938284977057265679693035418530128287725555650947891414792926730383764906542970791143495171112420993937796907373944954162381408144415640731695414885552511627034761140220513793390505204028514967907699868883104292007184068564198216778077998159064434840317766051189117154144331535699617453937747597080726353129346988233245681488182111046888491614516716997522825626380953008951591278628623187824920290866977393097796050694085324792925991242920411734387105495590170141051881427121118148463462584177782416287437525681652922911979880311143255319171496900919686711747055211627840240539365529756305664091869547251663985400484930787504071386746733139723378301135619308887610184427569659850070534065477717429427969976385635371906852112938898660091651432866528619468755527238788513647806997504073366279466850863343650587413400079928033638866878458591476896808623076902432705398557363827938827686717708822")
if (result == "914694913650024017065673198194252771514643652535406034299689928340563039127788257968969394122417645391597455972131286192010629179977832451673383375037676464940772449195813715654836085490346527837248226427555807113411369427899653071970444850560181523182920331529669969489283212855804621219412976652132777878778379255526204713364505161295067084887259990925124215181062492098511081684752874096899394073112197526279422697803996829007917211219245708813387309536727948706017996806754955397140591403398930187174138528772934518053465016282200555745336013218186944620400527017630078894487100306229959540793234579437955160180846067300234897095271510398247099859808217275818483264108612065375282359443877085066082751181934772303345562852151041854071927317968910235561061066932448987291093472228451911764310765817153335713672706116007153270164364371123651393137580847933992350157110681433142808234657298307267004616048173162297409805289585903109988400463038234807225628203602861058100037566638307442831492003553971589163326983498024735043865065994133103385591396263057559898277785196754789555192019888014130080132657874292205765088566890716308922353626491532489437696618891289625893289353538925932564179450822568945478049929691738867292195848940284637826727652215169547738868263927465096419765353209702948512532956828307736080487392011583298829859815301999268715331364129550606264115502671112753228375680709518177506932650681972570900691069494205843392077432202654005314935113011394125708528142688505531951808150067210063641515309766207392388801455949744921166884831763735792797567784231304198425306493987769654792259890498827254069105936686367752347674663131328694652357036627928654009231790703213878673466256524773319361825741295234760980019877429224656721941718043601214368746712641014774435956275970379349275369149062032367718735702306703723865617324710228419888275997116793455518210007637519487122442849637733243912590878023600638243327465533814634229561570692895954052093201958299425559840198065052732332089742884506029701898251109966013468750627572993962881823915674041727346489507235961158725406125743500498384607832429077197929996852751712641923969307311216198154445390046112614227607168609518405749620728691603417278135942875598480700188419175644449593295695009585392998589038281574619817160820054322591271014816400276649286137433947180739640566390591145855459731695373738659735066025767597516669784974226343002853433285035106479332519788651782293898400423728856918142204158831844290520508983562157394525317380584505734267386051818549011212716058308890829165326513165287994384124507444060144055617912568424919603088924930282622770675579045234908500255304001814048920092179398516815711413607465990317631983912892989280342115349416457408437722410627499031278739351294040892597282446009549003431637554001374081986654319698351830655419793363826893789354156945811717332444332261569366498501318943195995132521905250865097376248970137154691274474486829910685910383394613964633141836768236433965289415385751158779318050817208653286813859881179962658460770670951031454473229943818590551838760502361191926514433530341809686729602817072388225212241574104308910426061976540256376630213005819562286347499517728311751218415985312523794027940404204792085246908297060573973123990289995647742923455377028949130369436113859950325796334110606355852337769979636691489914831383913391163914121761114337102284475849290092628123868095762535078863222599620256176656031889642467984763476390809991580205714911790867365191595507316617287982906734760006005134142551080685905311998471524000180839287974535617627915992461927692429335710458996361927711492464701409334864426048604507353017007792556087160215101580251303332618546911417838749283646952613338459664831634621309972148218565934127750753289696484460581333901251049127359872717993843125746391270940173243348018016356749282544404846228518487611813624516736322976848383971695921749685762255713906692282755536553745402223343642631777252327166749358303392289189007511534764816256445043833610946536795348789025435936184544493267128418382691142078062652298377247846612115623605319450895833953963797321323173163272797830097826022248391534138990139307146648372281643470844152999353416102971755424021288278716667126826456656471466612119881677162916651281937161691046276145343418753361077148176077459457436705633177832464552705467594220471502401934194924030506554176130225544543389999639140769888029895897169368101422071716203257683088683711237692769442837420416604028188873780766027615826304792816987786174586836456539693894570037180838060669290424261539807343891008044574597556117526199143383716931158624695770412292864720972748353013985418122873367159414241668208179935007242895178723071811388507632778529870003277625283658139304277081468298037341309923914209171311083256866472050718433854222602484948797907909741671442101991138183577107933749735485241227092464623410078921427616956142185981655079130229567721134545217209198254564752778536204224806309490853978070022866901664797143228740238033251204476283481315437979774629458789747391714774176749149195448583671797857467942658345343")
println("true")
else
println("false")
}