# C++

**2012.cpp**

```cpp
// Calculate and print 2012^2012 in C++
// https://www.quora.com/What-is-2012-2012
#include <iostream>
using namespace std;
int main()
{
    int num[6647]={0},x,carry,i=2012,j;
    num[6646]=1;
    while(j=6647,carry=0,i--)
        while(j--)
        {
            x=num[j]*2012+carry;
            carry=x/10;
            num[j]=x%10;
        }
    while(++i<6647)cout<<num[i];
    cout<<endl;
    return 0;
}
```

Note that we may also calculate the value of

```
2012^2012
```

using the awesome bc:

```bash
export BC_LINE_LENGTH=1000000
echo "2012^2012" | bc
```

The output contains 6,647 characters:

79339321913706201344918542253529978726384267001115032900247765529088834426751292419339719593701042030488706862587642939454569490402221629535560003752101033735930781409635190062652518479183745796043560975865276103794913065259649354070088066567483333224286267333741973784851192915998551567961451752797039543624417835820719676208311412673063521416536716075498261223999859560803040605737339518187154126989156123975814308845447914315515493672044850491488200813790935675884643569134584350929265289508542365346050581936389922907558742461047087812591345586318603122957429274284248495209835827292667258280129406158344303713021631375352628515570311207609011797638423707691541981658929247414093851385558567188848660796799252761728103984100711417403446430078731003234893363922939459622151847939380669420038185171792928176725536515424575886854587832643478211479845878729690731963541868761620376215585054466922863231251801601639378005438513851995093584550037469111567301112190345175146470343977208156226352567220051095864866162153265840111370344158536232332716744571077813129667720598388207996970170417069839298598543721070847093131697171930009079923028525065229935291476089204017935818118433887487930509207008529016336715572771343933427470674344445959463686538460118331703139353991060568344888028572208448763522510073560668486786429550072899239482821756234242973560495347896128674478012167369310955293056318284064280430215711028989384310388836113882758714169357572452319295149841629270554625020262344076498164104256903633149630061111870182307282138008858512211404415133156958571534255303081679608812073747015511692266096495380406380157554050223084798416021992839555744698080421741563279403011448918160764123558343664847571287565330714336052788089168444146012143020226774510932432113734636413759931767638028739803706136697106878834732424336460541410617630876411495740895316895913011223666161546107753934375587771812731002727737889371509214873612130713982623158305239956928428298774253939788578853990719148490096496562573251129234395611049295474888356725558895157741200114303549072971271172475485298345792473681604820915505836102275629089939257081109290984711112521936963990773722242756821776116677773860667586225662248030302263016212506250843211630994495009594676181059528498709149307940567652441567128909352765961975349207070199153471026910775605688998810358732219882241143182604282712474049047043226828150204590134945328462557418100041852238954570808107784069011054847472753562168812035279631417711425370575482422676765480492514612059274910487291202942405634664878870514865040023199858590278913509595327066160708955773934930054203813490972772353313230753406109300696023494166119818206700203884601965010061146289992068630636172312631900011885228191211658335594363338399255781840674692727920029974900960188406345068041289611912113790245324893701200154216536595776762893748851079969055167859693692293941003359411749073260880131228307623871936798467583878291725672009524432461552888656107115233815893737459266418489892406645765494241216293080059570245087759181616778457403505163350533370975967222853957722917626307917027790755969575213016548462332842493271431137990438941432547471046681557561161447320656959478643723405558609699475561436777688113211590028823476161487423699778327820589674804630232349760566883977012557741081201767293773004261191462696373541029413758521761989046675756193755462491664161737461089786469179392559840401676253791610104090525359066320711004121024332561738986929205634720905290720399538157150807141156682105805259902888585953396275530408341160690997530571710155619248324964581683062643532150623746471406681222506245091327597152712092519689659503933135734408479545738073300280355472718527199741456168312111293997219912021457148249276520916000852922018147166386207319857119002592230122992680269784060102169630201055639794641822132035541975738972084821285023037523458187653822867556634787514082277406798715437796893120583559741145321788007756428526829820428616107250195767171944189435501030298826967840727134903987944138054771172682945634518555008606501122319934333486248722832377352832141437320118225663053118708637833031952113222612100547083524187580603221908090082589473905984928875094902904215458786429475879312069152423718228880046628764975193642845099987210187541783648038320218626799829390519637997556654087206764293465494108442490933980739849516074405840101744723571606890967550596145468871100427216548536083568720817671632918109907991775819382961960600909825613664834326900376545255406855196308868114478219326336840341953931987695938602369013155310823602090412109514895799861816924192749926089959835555017282201930512686939938902859072025289347862751619870748510723457982109744027860330048769166408820686488344614557077890727082446803092362855451298281897209720832663503534713194398229196996944167743143273739209918961989228224648430119509291183310976005444800216949781514649597619672956881936234521818210961284046359772287166166443036716984063895823360494450665697219115813617754717463426581701245994516551642117727920387807045553950443088276306356300896526987010370534384738534567418080884525083834265817741122550509762228570877883989376126781352797994390154636025024752410225800544784685745217843912303143190883342383994445424974708403208869028878793210817541425337953425685322919106695767421817567464147951327615151833726295054529929017530229612020883947436494344471159812596161506865386767773391406453884769729697110655175774784602370873024111519816261236669840329885418216324207156117378880985048279897762828725913214299558272711351095825599194808018031141390007837178998197699052208342997084479374486444149246055764865726636054413654012578718214636788114970002624540352969968844391807813936918682618970921861220298509316683720347340382189731092840834168067975769636356259457081234232027236710584922645810120569443039826343740560488578084264242406546639042282145587816074372949806772426373481041418052399653239577276164229829134717824497355509428747352837156118454223657124922350582558086402379535742703850646583332405290280548346412163845842966433200243949871711624409164160340844617502546020959550579776503673688117138161662790625478375041012022339259977460004419223359674484265806934521984115986397292328624532165505316137809013106093186286414948408346878547117562174365155077719407583696233678238165076117024183643184023869587123274366585211183956077248971089491586041481130295099983105200861347848629446517208329621423038141212913200701594072467775631614991556087531691431072001739120774738625870426684270470526102098026337508672897338046306805033012280164154278679125744836035283445105565613246283406795148933260640256
