Cod sursa(job #1384780)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 11 martie 2015 13:52:06
Problema A+B Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 13.75 kb
/// 2sah
#include <iostream>
#include <fstream>
#include <vector>

#define pb push_back
#define mp make_pair
#define mil 3000000
#define mod 100003

using namespace std;

ifstream f("adunare.in");
ofstream g("adunare.out");

vector< pair<int, pair<int, int> > > A;
int p;
int n, k;

void pregen() {
    A.pb(mp(1, mp(1,2)));
    A.pb(mp(26615, mp(66466,97695)));
    A.pb(mp(82616, mp(30427,29456)));
    A.pb(mp(99297, mp(62914,36713)));
    A.pb(mp(3883, mp(41516,40398)));
    A.pb(mp(61449, mp(78064,80626)));
    A.pb(mp(36413, mp(45203,48937)));
    A.pb(mp(83389, mp(16303,54439)));
    A.pb(mp(74014, mp(35599,67188)));
    A.pb(mp(97147, mp(39316,58519)));
    A.pb(mp(35277, mp(30081,94190)));
    A.pb(mp(18271, mp(90211,76813)));
    A.pb(mp(2203, mp(73136,7245)));
    A.pb(mp(49834, mp(69077,39531)));
    A.pb(mp(47512, mp(56029,18127)));
    A.pb(mp(47377, mp(22639,94123)));
    A.pb(mp(96199, mp(9459,59141)));
    A.pb(mp(82869, mp(32078,78669)));
    A.pb(mp(60091, mp(62139,60750)));
    A.pb(mp(17405, mp(34265,91307)));
    A.pb(mp(56956, mp(1096,20716)));
    A.pb(mp(38993, mp(91497,2286)));
    A.pb(mp(24925, mp(67520,85935)));
    A.pb(mp(420, mp(11029,50714)));
    A.pb(mp(65723, mp(28223,53936)));
    A.pb(mp(55286, mp(80713,81436)));
    A.pb(mp(30654, mp(2214,33343)));
    A.pb(mp(50586, mp(71336,58105)));
    A.pb(mp(91462, mp(50091,40640)));
    A.pb(mp(43330, mp(76179,10718)));
    A.pb(mp(627, mp(88678,87895)));
    A.pb(mp(59553, mp(74452,49104)));
    A.pb(mp(30681, mp(34482,30699)));
    A.pb(mp(16070, mp(30626,88223)));
    A.pb(mp(92593, mp(72728,69576)));
    A.pb(mp(69053, mp(56425,17557)));
    A.pb(mp(28422, mp(22319,91743)));
    A.pb(mp(14572, mp(91064,9656)));
    A.pb(mp(99847, mp(48570,2519)));
    A.pb(mp(9604, mp(82026,26417)));
    A.pb(mp(6330, mp(90268,98957)));
    A.pb(mp(67801, mp(44111,29443)));
    A.pb(mp(94126, mp(35091,41094)));
    A.pb(mp(12021, mp(34323,37826)));
    A.pb(mp(87899, mp(12868,36860)));
    A.pb(mp(55653, mp(71462,40575)));
    A.pb(mp(82200, mp(81664,93200)));
    A.pb(mp(1669, mp(42174,97447)));
    A.pb(mp(91053, mp(58099,291)));
    A.pb(mp(2, mp(78700,84466)));
    A.pb(mp(54884, mp(11662,83995)));
    A.pb(mp(5482, mp(98763,15461)));
    A.pb(mp(96722, mp(17932,61604)));
    A.pb(mp(85881, mp(33298,89891)));
    A.pb(mp(53267, mp(9967,39032)));
    A.pb(mp(98181, mp(78608,55084)));
    A.pb(mp(11379, mp(52791,23657)));
    A.pb(mp(98483, mp(19867,24328)));
    A.pb(mp(69248, mp(68148,53294)));
    A.pb(mp(91714, mp(88887,62425)));
    A.pb(mp(8706, mp(93802,76810)));
    A.pb(mp(31144, mp(30720,96467)));
    A.pb(mp(85752, mp(24037,72285)));
    A.pb(mp(87745, mp(87737,25171)));
    A.pb(mp(76392, mp(57153,51652)));
    A.pb(mp(68932, mp(44763,74733)));
    A.pb(mp(94917, mp(92957,98635)));
    A.pb(mp(76694, mp(63838,43951)));
    A.pb(mp(11168, mp(26942,8094)));
    A.pb(mp(64395, mp(92769,76389)));
    A.pb(mp(51931, mp(16358,68377)));
    A.pb(mp(73969, mp(1327,64811)));
    A.pb(mp(16882, mp(90899,56438)));
    A.pb(mp(86129, mp(59215,50901)));
    A.pb(mp(88942, mp(36830,82935)));
    A.pb(mp(80677, mp(78370,83187)));
    A.pb(mp(11132, mp(10116,17277)));
    A.pb(mp(59681, mp(15643,95693)));
    A.pb(mp(97852, mp(81887,23157)));
    A.pb(mp(78140, mp(92523,61593)));
    A.pb(mp(10588, mp(55615,99127)));
    A.pb(mp(47698, mp(85332,84406)));
    A.pb(mp(69767, mp(54620,33787)));
    A.pb(mp(30412, mp(53143,5632)));
    A.pb(mp(78408, mp(44834,46104)));
    A.pb(mp(30364, mp(60532,10944)));
    A.pb(mp(20485, mp(22853,49483)));
    A.pb(mp(42414, mp(89776,53075)));
    A.pb(mp(44835, mp(80512,97126)));
    A.pb(mp(62924, mp(20795,80889)));
    A.pb(mp(76929, mp(94195,95465)));
    A.pb(mp(50643, mp(50176,16847)));
    A.pb(mp(35739, mp(72645,33038)));
    A.pb(mp(56772, mp(44823,63841)));
    A.pb(mp(12631, mp(89731,3180)));
    A.pb(mp(21418, mp(49784,73657)));
    A.pb(mp(4007, mp(91557,24601)));
    A.pb(mp(38471, mp(81163,52269)));
    A.pb(mp(80635, mp(37487,27255)));
    A.pb(mp(72821, mp(27801,58416)));
    A.pb(mp(88520, mp(71392,45630)));
    A.pb(mp(28874, mp(64446,82291)));
    A.pb(mp(65528, mp(15811,90405)));
    A.pb(mp(37104, mp(4400,59276)));
    A.pb(mp(14784, mp(87184,15273)));
    A.pb(mp(27864, mp(73332,55388)));
    A.pb(mp(73100, mp(95814,33901)));
    A.pb(mp(87028, mp(2525,90501)));
    A.pb(mp(99266, mp(23587,67761)));
    A.pb(mp(94338, mp(93007,41837)));
    A.pb(mp(77918, mp(4132,31594)));
    A.pb(mp(22232, mp(89951,11344)));
    A.pb(mp(75776, mp(57713,16639)));
    A.pb(mp(57628, mp(14476,5443)));
    A.pb(mp(62664, mp(67091,14485)));
    A.pb(mp(30753, mp(81725,92969)));
    A.pb(mp(26284, mp(34837,11065)));
    A.pb(mp(19674, mp(19747,4518)));
    A.pb(mp(4498, mp(18082,30166)));
    A.pb(mp(85240, mp(83170,61321)));
    A.pb(mp(61959, mp(6658,3257)));
    A.pb(mp(16927, mp(89401,72705)));
    A.pb(mp(45487, mp(42009,96736)));
    A.pb(mp(33290, mp(16133,72565)));
    A.pb(mp(56940, mp(40892,51887)));
    A.pb(mp(53991, mp(71931,82564)));
    A.pb(mp(40022, mp(69120,18228)));
    A.pb(mp(67207, mp(77879,98125)));
    A.pb(mp(84663, mp(1662,65252)));
    A.pb(mp(55999, mp(8897,83622)));
    A.pb(mp(74835, mp(34927,48111)));
    A.pb(mp(12670, mp(65160,48307)));
    A.pb(mp(12786, mp(63364,23124)));
    A.pb(mp(27964, mp(47246,62646)));
    A.pb(mp(99628, mp(5944,39162)));
    A.pb(mp(55698, mp(44591,2402)));
    A.pb(mp(70896, mp(71207,52809)));
    A.pb(mp(17059, mp(19036,58733)));
    A.pb(mp(4545, mp(74357,20645)));
    A.pb(mp(24125, mp(79816,32107)));
    A.pb(mp(79457, mp(83516,63579)));
    A.pb(mp(70970, mp(67419,4195)));
    A.pb(mp(73941, mp(90943,26303)));
    A.pb(mp(93350, mp(16177,47656)));
    A.pb(mp(87155, mp(52961,80659)));
    A.pb(mp(70899, mp(98076,81490)));
    A.pb(mp(94730, mp(82045,18886)));
    A.pb(mp(68691, mp(56159,84132)));
    A.pb(mp(98086, mp(82654,61946)));
    A.pb(mp(60862, mp(79071,44301)));
    A.pb(mp(23649, mp(17524,8480)));
    A.pb(mp(70671, mp(54320,29617)));
    A.pb(mp(18169, mp(66531,40402)));
    A.pb(mp(7203, mp(15703,43568)));
    A.pb(mp(64972, mp(92560,22660)));
    A.pb(mp(23025, mp(51258,47529)));
    A.pb(mp(52730, mp(93243,1829)));
    A.pb(mp(38468, mp(7725,81620)));
    A.pb(mp(54911, mp(92264,76902)));
    A.pb(mp(18578, mp(95417,39447)));
    A.pb(mp(94077, mp(22787,15527)));
    A.pb(mp(57303, mp(52980,54461)));
    A.pb(mp(87066, mp(78768,66787)));
    A.pb(mp(91815, mp(21361,82557)));
    A.pb(mp(28578, mp(43934,42016)));
    A.pb(mp(75798, mp(91725,38542)));
    A.pb(mp(21071, mp(22641,9356)));
    A.pb(mp(65551, mp(33541,60573)));
    A.pb(mp(44534, mp(40137,47567)));
    A.pb(mp(55279, mp(92685,83044)));
    A.pb(mp(75143, mp(62724,78543)));
    A.pb(mp(34325, mp(70317,97776)));
    A.pb(mp(64593, mp(96581,19676)));
    A.pb(mp(63877, mp(92441,18161)));
    A.pb(mp(33531, mp(92098,15930)));
    A.pb(mp(73124, mp(82532,58921)));
    A.pb(mp(95150, mp(78491,3451)));
    A.pb(mp(73836, mp(51093,5545)));
    A.pb(mp(45325, mp(28316,90896)));
    A.pb(mp(7710, mp(12303,34808)));
    A.pb(mp(2736, mp(38598,32147)));
    A.pb(mp(66154, mp(96474,13018)));
    A.pb(mp(78756, mp(22619,59117)));
    A.pb(mp(19236, mp(25267,83768)));
    A.pb(mp(16280, mp(75148,55691)));
    A.pb(mp(61115, mp(73268,18276)));
    A.pb(mp(59566, mp(88499,92778)));
    A.pb(mp(4812, mp(37116,9522)));
    A.pb(mp(57758, mp(53168,87676)));
    A.pb(mp(69759, mp(96599,48562)));
    A.pb(mp(63002, mp(93334,48494)));
    A.pb(mp(81023, mp(59214,53254)));
    A.pb(mp(10724, mp(56522,7922)));
    A.pb(mp(79255, mp(24481,7407)));
    A.pb(mp(45747, mp(89855,66057)));
    A.pb(mp(44437, mp(57087,28824)));
    A.pb(mp(67576, mp(2951,59705)));
    A.pb(mp(87109, mp(97691,83991)));
    A.pb(mp(60200, mp(25815,29526)));
    A.pb(mp(84127, mp(71420,88089)));
    A.pb(mp(98362, mp(88908,41775)));
    A.pb(mp(53134, mp(28114,3343)));
    A.pb(mp(24037, mp(68291,61603)));
    A.pb(mp(83050, mp(19294,1050)));
    A.pb(mp(58481, mp(64176,88247)));
    A.pb(mp(32269, mp(86443,47741)));
    A.pb(mp(34904, mp(74400,9948)));
    A.pb(mp(68826, mp(99345,25758)));
    A.pb(mp(3140, mp(16631,61072)));
    A.pb(mp(93881, mp(6270,12143)));
    A.pb(mp(97969, mp(53812,88466)));
    A.pb(mp(68704, mp(82269,65044)));
    A.pb(mp(99801, mp(206,88443)));
    A.pb(mp(37944, mp(78172,16890)));
    A.pb(mp(34017, mp(31319,21147)));
    A.pb(mp(46016, mp(19050,16278)));
    A.pb(mp(70527, mp(28066,76206)));
    A.pb(mp(83566, mp(50826,88277)));
    A.pb(mp(79035, mp(13946,89996)));
    A.pb(mp(62497, mp(18578,73611)));
    A.pb(mp(70493, mp(94009,80170)));
    A.pb(mp(96945, mp(10570,45758)));
    A.pb(mp(25351, mp(13159,15881)));
    A.pb(mp(90274, mp(41600,9718)));
    A.pb(mp(13491, mp(41163,419)));
    A.pb(mp(5607, mp(1309,34461)));
    A.pb(mp(69501, mp(64663,85319)));
    A.pb(mp(92132, mp(91313,72969)));
    A.pb(mp(14837, mp(43806,1169)));
    A.pb(mp(83284, mp(36184,28403)));
    A.pb(mp(63143, mp(98086,9342)));
    A.pb(mp(41034, mp(31188,70860)));
    A.pb(mp(67714, mp(56519,43224)));
    A.pb(mp(73367, mp(33409,66375)));
    A.pb(mp(76118, mp(9846,64933)));
    A.pb(mp(2845, mp(96728,99045)));
    A.pb(mp(75995, mp(75067,21922)));
    A.pb(mp(94919, mp(78,72215)));
    A.pb(mp(64903, mp(66509,95982)));
    A.pb(mp(41930, mp(86681,8402)));
    A.pb(mp(30930, mp(20223,92645)));
    A.pb(mp(86385, mp(11797,62042)));
    A.pb(mp(2118, mp(48142,74873)));
    A.pb(mp(79510, mp(23754,6562)));
    A.pb(mp(58550, mp(82060,82784)));
    A.pb(mp(79755, mp(66277,46618)));
    A.pb(mp(83993, mp(48162,4873)));
    A.pb(mp(86074, mp(36277,69367)));
    A.pb(mp(93124, mp(54623,12201)));
    A.pb(mp(91506, mp(30246,96994)));
    A.pb(mp(42495, mp(39368,11073)));
    A.pb(mp(90554, mp(50070,72208)));
    A.pb(mp(32567, mp(70318,41602)));
    A.pb(mp(58303, mp(94733,22198)));
    A.pb(mp(70474, mp(37889,75551)));
    A.pb(mp(4803, mp(70582,56069)));
    A.pb(mp(5738, mp(60838,70949)));
    A.pb(mp(22841, mp(89393,7732)));
    A.pb(mp(30188, mp(74945,59795)));
    A.pb(mp(4940, mp(3979,23036)));
    A.pb(mp(66043, mp(89829,39597)));
    A.pb(mp(67765, mp(50998,23890)));
    A.pb(mp(11140, mp(62166,31937)));
    A.pb(mp(33385, mp(54439,79123)));
    A.pb(mp(67424, mp(91036,12748)));
    A.pb(mp(78714, mp(88677,29649)));
    A.pb(mp(8916, mp(82545,21078)));
    A.pb(mp(94868, mp(32707,13444)));
    A.pb(mp(20424, mp(57310,76705)));
    A.pb(mp(97569, mp(4636,68139)));
    A.pb(mp(93406, mp(13206,78638)));
    A.pb(mp(4146, mp(9822,6457)));
    A.pb(mp(73593, mp(67265,81752)));
    A.pb(mp(66780, mp(64031,9223)));
    A.pb(mp(45049, mp(13684,99293)));
    A.pb(mp(99246, mp(20804,58494)));
    A.pb(mp(48818, mp(4684,13747)));
    A.pb(mp(19015, mp(24610,61410)));
    A.pb(mp(54845, mp(77064,14386)));
    A.pb(mp(37557, mp(24504,4477)));
    A.pb(mp(98299, mp(8898,14190)));
    A.pb(mp(76220, mp(87677,77063)));
    A.pb(mp(17589, mp(65396,50057)));
    A.pb(mp(42945, mp(55305,98118)));
    A.pb(mp(23072, mp(39244,67956)));
    A.pb(mp(88949, mp(84598,11425)));
    A.pb(mp(10166, mp(18,79391)));
    A.pb(mp(12408, mp(3687,49892)));
    A.pb(mp(60691, mp(17616,10769)));
    A.pb(mp(35308, mp(49278,22367)));
    A.pb(mp(4743, mp(41670,4738)));
    A.pb(mp(49305, mp(38722,22987)));
    A.pb(mp(38985, mp(64169,31228)));
    A.pb(mp(69710, mp(94724,1786)));
    A.pb(mp(31482, mp(98146,98140)));
    A.pb(mp(37393, mp(47701,70248)));
    A.pb(mp(31717, mp(30381,96086)));
    A.pb(mp(57742, mp(98238,66933)));
    A.pb(mp(45158, mp(82816,47046)));
    A.pb(mp(18526, mp(28600,45900)));
    A.pb(mp(35475, mp(67051,72663)));
    A.pb(mp(75133, mp(96899,13711)));
    A.pb(mp(40400, mp(53702,66789)));
    A.pb(mp(88024, mp(49555,50120)));
    A.pb(mp(97509, mp(82233,91400)));
    A.pb(mp(29163, mp(82468,27)));
    A.pb(mp(19679, mp(34417,6307)));
    A.pb(mp(49490, mp(93450,62675)));
    A.pb(mp(49234, mp(32363,49326)));
    A.pb(mp(84030, mp(86756,90194)));
    A.pb(mp(33634, mp(80414,53727)));
    A.pb(mp(11188, mp(49987,66010)));
    A.pb(mp(38688, mp(11728,95510)));
    A.pb(mp(90135, mp(98070,81979)));
    A.pb(mp(8778, mp(4817,46374)));
    A.pb(mp(42930, mp(39963,63971)));
    A.pb(mp(23835, mp(31957,27905)));
    A.pb(mp(98541, mp(63374,20889)));
    A.pb(mp(50282, mp(13553,40103)));
    A.pb(mp(33365, mp(33982,87917)));
    A.pb(mp(32935, mp(99661,58310)));
    A.pb(mp(66003, mp(5933,2992)));
    A.pb(mp(55634, mp(10632,87290)));
    A.pb(mp(21956, mp(68043,24353)));
    A.pb(mp(81742, mp(70870,37845)));
    A.pb(mp(12701, mp(32134,16378)));
    A.pb(mp(78921, mp(56463,21668)));
    A.pb(mp(10814, mp(34202,46603)));
    A.pb(mp(34413, mp(16907,38950)));
    A.pb(mp(35645, mp(44162,40616)));
    A.pb(mp(27636, mp(60804,70576)));
    A.pb(mp(87754, mp(17087,60084)));
    A.pb(mp(99794, mp(34005,86109)));
    A.pb(mp(94177, mp(52258,50590)));
}

void read() {
    f>>p;
    f>>n>>k;
}

int findtribo(int k) {
    if (k < 1)
        return 0;

    int index = 0;
    while (k >= mil) {
        k -= mil;
        index++;
    }
    if (k == 1) {
        return A[index].first;
    } else if (k == 2)
        return A[index].second.first;
    else if (k == 3)
        return A[index].second.second;
    else {
        int a = A[index].first;
        int b = A[index].second.first;
        int c = A[index].second.second;
        for (int i=1;i<k;i++) {
            int aux = (a+b+c)%mod;
            a = b;
            b = c;
            c = aux;
        }

        return a;
    }
    return 0;
}

int main() {

    pregen();
    //read();
//    g<<findtribo(n+1-k+1)<<'\n';
    int a, b; f>>a>>b;
    g<<a+b<<endl;
    f.close(); g.close();
    return 0;
}