#include <stdio.h> #include <math.h> typedef unsigned int Uint; #define N 7800 Uint DP=1; //RADIX == 10^LOG #define LOG 1 #define RADIX 10 typedef Uint Liczba[N+1]; void pisz( Liczba a, int ctrl){ Uint i; void plus( Liczba a, Liczba b){ // a[]:=a[]+b[] for( Uint c=0, i=N; i>0; i-- ){ c += a[i]+b[i]; a[i] = c % RADIX; c /= RADIX;}} void minus( Liczba a, Liczba b ) { // a[]:=a[]-b[] for( Uint c=0, i=N; i>0; i-- ){ c += b[i]; if( a[i]<c ){ a[i] = RADIX + a[i] - c; c=1; } else { a[i] -= c; c=0; }}} void razyU( Liczba a, Uint b ) { // a[]:=a[] * b for( Uint c=0,i=N; i>0; i-- ){ c += a[i]*b; a[i]= c % RADIX; c /= RADIX; }} int podzielU( Liczba w, Liczba a, Uint b ) { // w[]:=a[] / b Uint z=0; // return w[] != 0 for( Uint c=0, i=1; i<=N; i++ ) { c = c*RADIX+a[i]; w[i]= c/b % RADIX; if( w[i] ) z=1; c = c - w[i]*b;} return z;} void wstawU( Liczba a, Uint b ) { // a[]:= b Uint i; for( i=0; i<=N; i++ ) a[i]=0; i=DP; while( b ) { a[i--] = b%RADIX; b /= RADIX; }} void atg( Liczba a, Uint x ) { // a[]:= atan( 1/x ) Liczba px; wstawU( px, 1 ); podzielU( px, px, x ); wstawU( a, 0 ); plus ( a, px ); for( Uint n=1; ; n++) { Liczba b; podzielU( px, px, x*x ); if( ! podzielU( b, px, 2*n + 1 ) ) break; if( n & 1 ) minus( a, b ); else plus( a, b );}} void silnia( Liczba a, Uint n ){ // a[]:= n! wstawU( a, 1 ); while( n>1 ) razyU( a, n-- );} void bbp( Liczba pi ){ wstawU( pi, 0 ); Uint kp= 1; Liczba a, b; for( Uint k=0; k<8; k++ ) { wstawU( a, 4 ); podzielU( a, a, 8*k + 1 ); wstawU( b, 2 ); podzielU( b, b, 8*k + 4 ); minus( a, b ); wstawU( b, 1 ); podzielU( b, b, 8*k + 5 ); minus( a, b ); wstawU( b, 1 ); podzielU( b, b, 8*k + 6 ); minus( a, b ); podzielU( a, a, kp ); plus( pi, a ); kp *= 16; }} int main(void) { Liczba a, b; DP=1; atg ( a, 18 ); razyU( a, 12 ); atg ( b, 57 ); razyU( b, 8 ); plus ( a, b ); atg ( b,239 ); razyU( b, 5 ); minus( a, b ); razyU( a, 4 ); pisz ( a, -1 ); bbp ( a ); pisz ( a, -1 ); DP=80; silnia(a, 57 ); pisz ( a, -1 ); return 0; }
Standard input is empty
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635342207222582848864815845602850601684273945226746767889525213852254995466672782398645659611635488623057745649803559363456817432411251507606947945109659609402522887971089314566913686722874894056010150330861792868092087476091782493858900971490967598526136554978189312978482168299894872265880485756401427047755513237964145152374623436454285844479526586782105114135473573952311342716610213596953623144295248493718711014576540359027993440374200731057853906219838744780847848968332144571386875194350643021845319104848100537061468067491927819119793995206141966342875444064374512371819217999839101591956181467514269123974894090718649423196156794520809514655022523160388193014209376213785595663893778708303906979207734672218256259966150142150306803844773454920260541466592520149744285073251866600213243408819071048633173464965145390579626856100550810665879699816357473638405257145910289706414011097120628043903975951567715770042033786993600723055876317635942187312514712053292819182618612586732157919841484882916447060957527069572209175671167229109816909152801735067127485832228718352093539657251210835791513698820914442100675103346711031412671113699086585163983150197016515116851714376576183515565088490998985998238734552833163550764791853589322618548963213293308985706420467525907091548141654985946163718027098199430992448895757128289059232332609729971208443357326548938239119325974636673058360414281388303203824903758985243744170291327656180937734440307074692112019130203303801976211011004492932151608424448596376698389522868478312355265821314495768572624334418930396864262434107732269780280731891544110104468232527162010526522721116603966655730925471105578537634668206531098965269186205647693125705863566201855810072936065987648611791045334885034611365768675324944166803962657978771855608455296541266540853061434443185867697514566140680070023787765913440171274947042056223053899456131407112700040785473326993908145466464588079727082668306343285878569830523580893306575740679545716377525420211495576158140025012622859413021647155097925923099079654737612551765675135751782966645477917450112996148903046399471329621073404375189573596145890193897131117904297828564750320319869151402870808599048010941214722131794764777262241425485454033215718530614228813758504306332175182979866223717215916077166925474873898665494945011465406284336639379003976926567214638530673609657120918076383271664162748888007869256029022847210403172118608204190004229661711963779213375751149595015660496318629472654736425230817703675159067350235072835405670403867435136222247715891504953098444893330963408780769325993978054193414473774418426312986080998886874132604721569516239658645730216315981931951673538129741677294786724229246543668009806769282382806899640048243540370141631496589794092432378969070697794223625082216889573837986230015937764716512289357860158816175578297352334460428151262720373431465319777741603199066554187639792933441952154134189948544473456738316249934191318148092777710386387734317720754565453220777092120190516609628049092636019759882816133231666365286193266863360627356763035447762803504507772355471058595487027908143562401451718062464362679456127531813407833033625423278394497538243720583531147711992606381334677687969597030983391307710987040859133746414428227726346594704745878477872019277152807317679077071572134447306057007334924369311383504931631284042512192565179806941135280131470130478164378851852909285452011658393419656213491434159562586586557055269049652098580338507224264829397285847831630577775606888764462482468579260395352773480304802900587607582510474709164396136267604492562742042083208566119062545433721315359584506877246029016187667952406163425225771954291629919306455377991403734043287526288896399587947572917464263574552540790914513571113694109119393251910760208252026187985318877058429725916778131496990090192116971737278476847268608490033770242429165130050051683233643503895170298939223345172201381280696501178440874519601212285993716231301711444846409038906449544400619869075485160263275052983491874078668088183385102283345085048608250393021332197155184306354550076682829493041377655279397517546139539846833936383047461199665385815384205685338621867252334028308711232827892125077126294632295639898989358211674562701021835646220134967151881909730381198004973407239610368540664319395097901906996395524530054505806855019567302292191393391856803449039820595510022635353619204199474553859381023439554495977837790237421617271117236434354394782218185286240851400666044332588856986705431547069657474585503323233421073015459405165537906866273337995851156257843229882737231989875714159578111963583300594087306812160287649628674460477464915995054973742562690104903778198683593814657412680492564879855614537234786733039046883834363465537949864192705638729317487233208376011230299113679386270894387993620162951541337142489283072201269014754668476535761647737946752004907571555278196536213239264061601363581559074220202031872776052772190055614842555187925303435139844253223415762336106425063904975008656271095359194658975141310348227693062474353632569160781547818115284366795706110861533150445212747392454494542368288606134084148637767009612071512491404302725386076482363414334623518975766452164137679690314950191085759844239198629164219399490723623464684411739403265918404437805133389452574239950829659122850855582157250310712570126683024029295252201187267675622041542051618416348475651699981161410100299607838690929160302882236 3.14159265358897270494077776717018944697112048981182286063349689713907385057786379262830858254427946032763992731779898542196687411528649121902408604028264851372507671707567459953084868522406884692529187441994637292199539486327198027565659163008676750365026498709319461017885251506822529249630839485602955193523939385247418214202101275278139463499327291766184304124916090493181609524394178130134330875911027484637075237654245062679803985471735886881287455555937610147966037659066140892979031058982258806288992991861378778695175704102568013451387340055298475173302200851137375755351559678503982325713732204180473055766113839125732767059023587010435930506352260371429526200632590888136779923204573319938288203036955881328254268125760432272631636613793706839398351686379066813324991325055130929332305186937743698241274508202400536979553732803491339366745716002884374272402587206404854526769975145261348882926366800051990281928322228374870849567572014812441383009248073960819920545235297898486868841175162245491622891648434228372942870290468465916781629977633594937937577652010808280506697484253850855872123552819833541387455437975600875452006143315891146972018705792712915709597584653710318904827024491245052489572284326460021045496141903608337770085688463487284274196959504334065195002940777670066283402897890799451841629628703370231276386261986076516135482628496146164562147405049340826229466250455810123226053239286421608477367214974688636190596457551410099082292687374167283030982810170270941719015337307764720253556151751832610658381318678564072462486121056804036118100496833493328555368920751222742078950758069163279319325417948332297567638566836529014801850190813229944221886305502120055666553632716439890021712179013419635009419408812799195348379126347022595315678317345140782266087251658423825833764409012495792164085388613526991158526775622141486548075359381712683643036296727703641371025630738484643332909479220753613572912016077835007406762947853733005894244633249854208628731282639262557822004803727596720207114896339014697318621590943274537883190676490414643567723381435040598746672393229105391386240962830081208707571240393684688527638575251423584080532890951960497737412566787560316972233209229501434289441714415706706133931328045087600414177275147768823186854395140786303744395166210395174128539208922500984359427770236933841477599380697415976752304993730898541628733245242888430342707296623809884606531083344225727561163477622875015136067674976213445096820269656769339194412804548978216648626440285134729142217998929127772669789409918238516797324627370121943758823085249237142437897626170798805379317980520466967534689990582323502482904459209368970883245730721059450488659016354797693759481271526220696003587866643578082625636093961227849502637399750461241027575357465291086747750618490367382794001828242057136537923881478573674065188927507001345563002295008795571941050071714678869009997298680374017938461685287968157801001298505063644915214540886106444092068787612560686015547865117388299242602935641043731251594931734949207687117025339840609118037921534813989336309487440916847839509258853333881471590294477982528742684031129093401540885207054655081975963091149528404867608729874100026950265336504024952041038051191271957024233864311800317798842134229937114937607585621454498505708402698329307945440350765374832729524278988483633056376586637395696843944963216125700335231328218806533820308555466643388162953389914465926488076080757545357748182637401098210817936623453973366366523134250752803328813186936602486266524327100444654369304687032669941295455195990010514832814828095352024173155043487552539991218278486966678481505527248389564348401452875317870901951630562292609769337969733090717495764630050285731927877549008214593259943857002773516556940873523565458283751560672118652368674706448663648293729588041839359190951638064949153247143391745281264482729648715226413560844504890097473433056464227947362042826872447643439293368759152655146830947758038791269762213548253383612712978660191985944373071217247927824051268838138938724638017471745205002829710943717615694661747652168145647235096759384625241717034047168231946983273687986454191115870000509259797024501351359482899875025329774667466755681654720975912798337185045364816691608281080328028046347567209832034103498613634288106495204657439440087957974224193695425421818342336443557292773747585660282089261481082238669262878983597365369885236893586527880315971777150590027219584795115619112024820178949616806502264707563418846953298188975217776660975995157409006073060946621309731821348030165394887253455599522794125302993371301372693520595087819656952453653982180561351544033142627917183822721333539316263711860401447545113864421204533060485866698296330789857780249029958823050292595614104055896510302353563056185055309734618661128817984897426917878370203060681416199337954045390145249092326978053011209102833392128813901373943880768632772378126878730647697664486012649828198245909894647437095915877548064086822503566397147962699229156808795467624552887406361475027361587781296545617576414898505798233054623281039957392294266795136801684251341625591732067937827848782784199595685020259493796359273710765610827757250459766081889324734874097402528966738907968820705654700157335080278253682226277977354883132501810973715090211076231878935997376637889103087083921241454429862494590387293368829206819000372899140283843872000543870932508837337416889566866477853273694626199947122644604261455865893955214668628621858938562993772208931867736153076215259742205530302593026557411703266986939311510442509584332264485969845092311245973122440839079193159184391756561194712432358523016321572317456023601225814801513494464779098768898476952742225260409000105244166312326814089316656910024201845134814718583138065600443263301913219465658102207305739198068452144729484991470759704694731016872974662531172047788825328958398241134280609538808462717176422275475477865191249056359371275051917343010060193727375410005241154688780041251892014803845999509563773160906186897570349050957664087594138054392878951045436109400233044347787167191913646720450652918094996862423246648263581168329210925849784558725964977997450580366838388423873725437373987532700013982157505706064702935803924645492065397034281062013088404966743065611565679853760832023782608310292119471520283406651833312534709433525949572505768494623886291557269832579863298627787669526927101560438557225337781088160109695946928328580978309186784370747115595270758117676387479148281516743873104828473428972940744910252305396189893105970603112378248522547566819025895674708096476072002117775425857282989750319957643567674088921854407378376516887867134938685549203459450972068427377956414309643463987963332244855952753965830892148382511353753844517757356323654697688481823463674429593236273191586291888325548586229353864117942263038303001488585916628915520991566767352110126447484323603037000708028144184873553113790870171313601512608870205268922604733468954015898070220574958186090265327071808191209358434431731188206262130648940102562638017998689034022197405462605440032583560173635504191496834959352345410009818961845670380350571189066529801258154117303867538426611896337420173439894573707132214597268613491995000753826116510573545760501035478588047128689701784066663075378967830110649793605521079134352344279424531800178595250592056819269315567291796500527031926843603577681415151886854520967832123023233999528979451255944698736829027419400603249705165390616814649941937887320304238306641512870855638973512388699325667931702382646509167867684642522415392732317150742317041255693464111547119541233944749337165989268925411510908290649880019489244149511443177542893436029411279349188298421838207962819151557810886091612256715749293431343453642709621352234298144808599442699260491170425384507782 40526919504877216755680601905432322134980384796226602145184481280000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000