Два въпроса
31 отговора
1280 прегледа
Два въпроса
1. Имаше един алгоритъм за чертане на линия по зададени координати. Метода беше на някой си Д* (непомня, може и да не започваше с 'Д'). Идеята беше, че се работеше само с цели числа и не се използваше деление (или поне беше само целочислено деление...). Някой да може да ми припомни нещо?
2. Някой да знае алгоритъм за превръщане на цяло двойчно число в стринг (ASCII), без да се използва деление?
2. Някой да знае алгоритъм за превръщане на цяло двойчно число в стринг (ASCII), без да се използва деление?
Re: Два въпроса
1. veroiatno imash predwid Jack Bresnham?
2. iziwniawai no ne razbiram kakwo iskash :)
kakwo zanchi "dwoichno chislo" ?????
primerno
char * binary_nubmer = "10101010111010";
towa dwoichno chislo li e? shtoto e i string :)
moje bi iskash da kajesh imaiki promenliwa ot tip int
int i = 13762;
da obrazuwahs string sydyrjash zapisa na chisloto w dwoichna posicionna
broina sistema?
utochni se, pls.
2. iziwniawai no ne razbiram kakwo iskash :)
kakwo zanchi "dwoichno chislo" ?????
primerno
char * binary_nubmer = "10101010111010";
towa dwoichno chislo li e? shtoto e i string :)
moje bi iskash da kajesh imaiki promenliwa ot tip int
int i = 13762;
da obrazuwahs string sydyrjash zapisa na chisloto w dwoichna posicionna
broina sistema?
utochni se, pls.
Re: Два въпроса
За 1. може да си прав! Ще потърся из нета.
За 2. Имам предвид - преобразуване на цяло число в стринг. т.е. нещо като
ф-та itoa(). Пример:
Имам едн байт съсдържащ число от 0 - 255 в двоичен запис. Нека това число да е 128 или 0x80 или двойчното '10000000'. Трябва да получа стринга "128", без да използвам деление, с възможно най-прости операции: +, - , >>, <<, и т.н.
За 2. Имам предвид - преобразуване на цяло число в стринг. т.е. нещо като
ф-та itoa(). Пример:
Имам едн байт съсдържащ число от 0 - 255 в двоичен запис. Нека това число да е 128 или 0x80 или двойчното '10000000'. Трябва да получа стринга "128", без да използвам деление, с възможно най-прости операции: +, - , >>, <<, и т.н.
Re: Два въпроса
Ako e samo za edin byte napravi masiv sas stringove ot 0 dor 255 i go indeksirai sas stoinostta na byte-a nai-barzoto za koeto moga da se setia niama nikakvi operacii + - * ili / dori niama nuzda ot >> << :)
Re: Два въпроса
Ето до какви извращения може да достигне човек, ако се заинати да направи бърз код за печатане на десетични числа:
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
static unsigned long ndigits[1000] = {
1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
};
static unsigned long digits[1000] = {
48,49,50,51,52,53,54,55,
56,57,12337,12593,12849,13105,13361,13617,
13873,14129,14385,14641,12338,12594,12850,13106,
13362,13618,13874,14130,14386,14642,12339,12595,
12851,13107,13363,13619,13875,14131,14387,14643,
12340,12596,12852,13108,13364,13620,13876,14132,
14388,14644,12341,12597,12853,13109,13365,13621,
13877,14133,14389,14645,12342,12598,12854,13110,
13366,13622,13878,14134,14390,14646,12343,12599,
12855,13111,13367,13623,13879,14135,14391,14647,
12344,12600,12856,13112,13368,13624,13880,14136,
14392,14648,12345,12601,12857,13113,13369,13625,
13881,14137,14393,14649,3158065,3223601,3289137,3354673,
3420209,3485745,3551281,3616817,3682353,3747889,3158321,3223857,
3289393,3354929,3420465,3486001,3551537,3617073,3682609,3748145,
3158577,3224113,3289649,3355185,3420721,3486257,3551793,3617329,
3682865,3748401,3158833,3224369,3289905,3355441,3420977,3486513,
3552049,3617585,3683121,3748657,3159089,3224625,3290161,3355697,
3421233,3486769,3552305,3617841,3683377,3748913,3159345,3224881,
3290417,3355953,3421489,3487025,3552561,3618097,3683633,3749169,
3159601,3225137,3290673,3356209,3421745,3487281,3552817,3618353,
3683889,3749425,3159857,3225393,3290929,3356465,3422001,3487537,
3553073,3618609,3684145,3749681,3160113,3225649,3291185,3356721,
3422257,3487793,3553329,3618865,3684401,3749937,3160369,3225905,
3291441,3356977,3422513,3488049,3553585,3619121,3684657,3750193,
3158066,3223602,3289138,3354674,3420210,3485746,3551282,3616818,
3682354,3747890,3158322,3223858,3289394,3354930,3420466,3486002,
3551538,3617074,3682610,3748146,3158578,3224114,3289650,3355186,
3420722,3486258,3551794,3617330,3682866,3748402,3158834,3224370,
3289906,3355442,3420978,3486514,3552050,3617586,3683122,3748658,
3159090,3224626,3290162,3355698,3421234,3486770,3552306,3617842,
3683378,3748914,3159346,3224882,3290418,3355954,3421490,3487026,
3552562,3618098,3683634,3749170,3159602,3225138,3290674,3356210,
3421746,3487282,3552818,3618354,3683890,3749426,3159858,3225394,
3290930,3356466,3422002,3487538,3553074,3618610,3684146,3749682,
3160114,3225650,3291186,3356722,3422258,3487794,3553330,3618866,
3684402,3749938,3160370,3225906,3291442,3356978,3422514,3488050,
3553586,3619122,3684658,3750194,3158067,3223603,3289139,3354675,
3420211,3485747,3551283,3616819,3682355,3747891,3158323,3223859,
3289395,3354931,3420467,3486003,3551539,3617075,3682611,3748147,
3158579,3224115,3289651,3355187,3420723,3486259,3551795,3617331,
3682867,3748403,3158835,3224371,3289907,3355443,3420979,3486515,
3552051,3617587,3683123,3748659,3159091,3224627,3290163,3355699,
3421235,3486771,3552307,3617843,3683379,3748915,3159347,3224883,
3290419,3355955,3421491,3487027,3552563,3618099,3683635,3749171,
3159603,3225139,3290675,3356211,3421747,3487283,3552819,3618355,
3683891,3749427,3159859,3225395,3290931,3356467,3422003,3487539,
3553075,3618611,3684147,3749683,3160115,3225651,3291187,3356723,
3422259,3487795,3553331,3618867,3684403,3749939,3160371,3225907,
3291443,3356979,3422515,3488051,3553587,3619123,3684659,3750195,
3158068,3223604,3289140,3354676,3420212,3485748,3551284,3616820,
3682356,3747892,3158324,3223860,3289396,3354932,3420468,3486004,
3551540,3617076,3682612,3748148,3158580,3224116,3289652,3355188,
3420724,3486260,3551796,3617332,3682868,3748404,3158836,3224372,
3289908,3355444,3420980,3486516,3552052,3617588,3683124,3748660,
3159092,3224628,3290164,3355700,3421236,3486772,3552308,3617844,
3683380,3748916,3159348,3224884,3290420,3355956,3421492,3487028,
3552564,3618100,3683636,3749172,3159604,3225140,3290676,3356212,
3421748,3487284,3552820,3618356,3683892,3749428,3159860,3225396,
3290932,3356468,3422004,3487540,3553076,3618612,3684148,3749684,
3160116,3225652,3291188,3356724,3422260,3487796,3553332,3618868,
3684404,3749940,3160372,3225908,3291444,3356980,3422516,3488052,
3553588,3619124,3684660,3750196,3158069,3223605,3289141,3354677,
3420213,3485749,3551285,3616821,3682357,3747893,3158325,3223861,
3289397,3354933,3420469,3486005,3551541,3617077,3682613,3748149,
3158581,3224117,3289653,3355189,3420725,3486261,3551797,3617333,
3682869,3748405,3158837,3224373,3289909,3355445,3420981,3486517,
3552053,3617589,3683125,3748661,3159093,3224629,3290165,3355701,
3421237,3486773,3552309,3617845,3683381,3748917,3159349,3224885,
3290421,3355957,3421493,3487029,3552565,3618101,3683637,3749173,
3159605,3225141,3290677,3356213,3421749,3487285,3552821,3618357,
3683893,3749429,3159861,3225397,3290933,3356469,3422005,3487541,
3553077,3618613,3684149,3749685,3160117,3225653,3291189,3356725,
3422261,3487797,3553333,3618869,3684405,3749941,3160373,3225909,
3291445,3356981,3422517,3488053,3553589,3619125,3684661,3750197,
3158070,3223606,3289142,3354678,3420214,3485750,3551286,3616822,
3682358,3747894,3158326,3223862,3289398,3354934,3420470,3486006,
3551542,3617078,3682614,3748150,3158582,3224118,3289654,3355190,
3420726,3486262,3551798,3617334,3682870,3748406,3158838,3224374,
3289910,3355446,3420982,3486518,3552054,3617590,3683126,3748662,
3159094,3224630,3290166,3355702,3421238,3486774,3552310,3617846,
3683382,3748918,3159350,3224886,3290422,3355958,3421494,3487030,
3552566,3618102,3683638,3749174,3159606,3225142,3290678,3356214,
3421750,3487286,3552822,3618358,3683894,3749430,3159862,3225398,
3290934,3356470,3422006,3487542,3553078,3618614,3684150,3749686,
3160118,3225654,3291190,3356726,3422262,3487798,3553334,3618870,
3684406,3749942,3160374,3225910,3291446,3356982,3422518,3488054,
3553590,3619126,3684662,3750198,3158071,3223607,3289143,3354679,
3420215,3485751,3551287,3616823,3682359,3747895,3158327,3223863,
3289399,3354935,3420471,3486007,3551543,3617079,3682615,3748151,
3158583,3224119,3289655,3355191,3420727,3486263,3551799,3617335,
3682871,3748407,3158839,3224375,3289911,3355447,3420983,3486519,
3552055,3617591,3683127,3748663,3159095,3224631,3290167,3355703,
3421239,3486775,3552311,3617847,3683383,3748919,3159351,3224887,
3290423,3355959,3421495,3487031,3552567,3618103,3683639,3749175,
3159607,3225143,3290679,3356215,3421751,3487287,3552823,3618359,
3683895,3749431,3159863,3225399,3290935,3356471,3422007,3487543,
3553079,3618615,3684151,3749687,3160119,3225655,3291191,3356727,
3422263,3487799,3553335,3618871,3684407,3749943,3160375,3225911,
3291447,3356983,3422519,3488055,3553591,3619127,3684663,3750199,
3158072,3223608,3289144,3354680,3420216,3485752,3551288,3616824,
3682360,3747896,3158328,3223864,3289400,3354936,3420472,3486008,
3551544,3617080,3682616,3748152,3158584,3224120,3289656,3355192,
3420728,3486264,3551800,3617336,3682872,3748408,3158840,3224376,
3289912,3355448,3420984,3486520,3552056,3617592,3683128,3748664,
3159096,3224632,3290168,3355704,3421240,3486776,3552312,3617848,
3683384,3748920,3159352,3224888,3290424,3355960,3421496,3487032,
3552568,3618104,3683640,3749176,3159608,3225144,3290680,3356216,
3421752,3487288,3552824,3618360,3683896,3749432,3159864,3225400,
3290936,3356472,3422008,3487544,3553080,3618616,3684152,3749688,
3160120,3225656,3291192,3356728,3422264,3487800,3553336,3618872,
3684408,3749944,3160376,3225912,3291448,3356984,3422520,3488056,
3553592,3619128,3684664,3750200,3158073,3223609,3289145,3354681,
3420217,3485753,3551289,3616825,3682361,3747897,3158329,3223865,
3289401,3354937,3420473,3486009,3551545,3617081,3682617,3748153,
3158585,3224121,3289657,3355193,3420729,3486265,3551801,3617337,
3682873,3748409,3158841,3224377,3289913,3355449,3420985,3486521,
3552057,3617593,3683129,3748665,3159097,3224633,3290169,3355705,
3421241,3486777,3552313,3617849,3683385,3748921,3159353,3224889,
3290425,3355961,3421497,3487033,3552569,3618105,3683641,3749177,
3159609,3225145,3290681,3356217,3421753,3487289,3552825,3618361,
3683897,3749433,3159865,3225401,3290937,3356473,3422009,3487545,
3553081,3618617,3684153,3749689,3160121,3225657,3291193,3356729,
3422265,3487801,3553337,3618873,3684409,3749945,3160377,3225913,
3291449,3356985,3422521,3488057,3553593,3619129,3684665,3750201,
};
static unsigned long zdigits[1000] = {
3158064,3223600,3289136,3354672,3420208,3485744,3551280,3616816,
3682352,3747888,3158320,3223856,3289392,3354928,3420464,3486000,
3551536,3617072,3682608,3748144,3158576,3224112,3289648,3355184,
3420720,3486256,3551792,3617328,3682864,3748400,3158832,3224368,
3289904,3355440,3420976,3486512,3552048,3617584,3683120,3748656,
3159088,3224624,3290160,3355696,3421232,3486768,3552304,3617840,
3683376,3748912,3159344,3224880,3290416,3355952,3421488,3487024,
3552560,3618096,3683632,3749168,3159600,3225136,3290672,3356208,
3421744,3487280,3552816,3618352,3683888,3749424,3159856,3225392,
3290928,3356464,3422000,3487536,3553072,3618608,3684144,3749680,
3160112,3225648,3291184,3356720,3422256,3487792,3553328,3618864,
3684400,3749936,3160368,3225904,3291440,3356976,3422512,3488048,
3553584,3619120,3684656,3750192,3158065,3223601,3289137,3354673,
3420209,3485745,3551281,3616817,3682353,3747889,3158321,3223857,
3289393,3354929,3420465,3486001,3551537,3617073,3682609,3748145,
3158577,3224113,3289649,3355185,3420721,3486257,3551793,3617329,
3682865,3748401,3158833,3224369,3289905,3355441,3420977,3486513,
3552049,3617585,3683121,3748657,3159089,3224625,3290161,3355697,
3421233,3486769,3552305,3617841,3683377,3748913,3159345,3224881,
3290417,3355953,3421489,3487025,3552561,3618097,3683633,3749169,
3159601,3225137,3290673,3356209,3421745,3487281,3552817,3618353,
3683889,3749425,3159857,3225393,3290929,3356465,3422001,3487537,
3553073,3618609,3684145,3749681,3160113,3225649,3291185,3356721,
3422257,3487793,3553329,3618865,3684401,3749937,3160369,3225905,
3291441,3356977,3422513,3488049,3553585,3619121,3684657,3750193,
3158066,3223602,3289138,3354674,3420210,3485746,3551282,3616818,
3682354,3747890,3158322,3223858,3289394,3354930,3420466,3486002,
3551538,3617074,3682610,3748146,3158578,3224114,3289650,3355186,
3420722,3486258,3551794,3617330,3682866,3748402,3158834,3224370,
3289906,3355442,3420978,3486514,3552050,3617586,3683122,3748658,
3159090,3224626,3290162,3355698,3421234,3486770,3552306,3617842,
3683378,3748914,3159346,3224882,3290418,3355954,3421490,3487026,
3552562,3618098,3683634,3749170,3159602,3225138,3290674,3356210,
3421746,3487282,3552818,3618354,3683890,3749426,3159858,3225394,
3290930,3356466,3422002,3487538,3553074,3618610,3684146,3749682,
3160114,3225650,3291186,3356722,3422258,3487794,3553330,3618866,
3684402,3749938,3160370,3225906,3291442,3356978,3422514,3488050,
3553586,3619122,3684658,3750194,3158067,3223603,3289139,3354675,
3420211,3485747,3551283,3616819,3682355,3747891,3158323,3223859,
3289395,3354931,3420467,3486003,3551539,3617075,3682611,3748147,
3158579,3224115,3289651,3355187,3420723,3486259,3551795,3617331,
3682867,3748403,3158835,3224371,3289907,3355443,3420979,3486515,
3552051,3617587,3683123,3748659,3159091,3224627,3290163,3355699,
3421235,3486771,3552307,3617843,3683379,3748915,3159347,3224883,
3290419,3355955,3421491,3487027,3552563,3618099,3683635,3749171,
3159603,3225139,3290675,3356211,3421747,3487283,3552819,3618355,
3683891,3749427,3159859,3225395,3290931,3356467,3422003,3487539,
3553075,3618611,3684147,3749683,3160115,3225651,3291187,3356723,
3422259,3487795,3553331,3618867,3684403,3749939,3160371,3225907,
3291443,3356979,3422515,3488051,3553587,3619123,3684659,3750195,
3158068,3223604,3289140,3354676,3420212,3485748,3551284,3616820,
3682356,3747892,3158324,3223860,3289396,3354932,3420468,3486004,
3551540,3617076,3682612,3748148,3158580,3224116,3289652,3355188,
3420724,3486260,3551796,3617332,3682868,3748404,3158836,3224372,
3289908,3355444,3420980,3486516,3552052,3617588,3683124,3748660,
3159092,3224628,3290164,3355700,3421236,3486772,3552308,3617844,
3683380,3748916,3159348,3224884,3290420,3355956,3421492,3487028,
3552564,3618100,3683636,3749172,3159604,3225140,3290676,3356212,
3421748,3487284,3552820,3618356,3683892,3749428,3159860,3225396,
3290932,3356468,3422004,3487540,3553076,3618612,3684148,3749684,
3160116,3225652,3291188,3356724,3422260,3487796,3553332,3618868,
3684404,3749940,3160372,3225908,3291444,3356980,3422516,3488052,
3553588,3619124,3684660,3750196,3158069,3223605,3289141,3354677,
3420213,3485749,3551285,3616821,3682357,3747893,3158325,3223861,
3289397,3354933,3420469,3486005,3551541,3617077,3682613,3748149,
3158581,3224117,3289653,3355189,3420725,3486261,3551797,3617333,
3682869,3748405,3158837,3224373,3289909,3355445,3420981,3486517,
3552053,3617589,3683125,3748661,3159093,3224629,3290165,3355701,
3421237,3486773,3552309,3617845,3683381,3748917,3159349,3224885,
3290421,3355957,3421493,3487029,3552565,3618101,3683637,3749173,
3159605,3225141,3290677,3356213,3421749,3487285,3552821,3618357,
3683893,3749429,3159861,3225397,3290933,3356469,3422005,3487541,
3553077,3618613,3684149,3749685,3160117,3225653,3291189,3356725,
3422261,3487797,3553333,3618869,3684405,3749941,3160373,3225909,
3291445,3356981,3422517,3488053,3553589,3619125,3684661,3750197,
3158070,3223606,3289142,3354678,3420214,3485750,3551286,3616822,
3682358,3747894,3158326,3223862,3289398,3354934,3420470,3486006,
3551542,3617078,3682614,3748150,3158582,3224118,3289654,3355190,
3420726,3486262,3551798,3617334,3682870,3748406,3158838,3224374,
3289910,3355446,3420982,3486518,3552054,3617590,3683126,3748662,
3159094,3224630,3290166,3355702,3421238,3486774,3552310,3617846,
3683382,3748918,3159350,3224886,3290422,3355958,3421494,3487030,
3552566,3618102,3683638,3749174,3159606,3225142,3290678,3356214,
3421750,3487286,3552822,3618358,3683894,3749430,3159862,3225398,
3290934,3356470,3422006,3487542,3553078,3618614,3684150,3749686,
3160118,3225654,3291190,3356726,3422262,3487798,3553334,3618870,
3684406,3749942,3160374,3225910,3291446,3356982,3422518,3488054,
3553590,3619126,3684662,3750198,3158071,3223607,3289143,3354679,
3420215,3485751,3551287,3616823,3682359,3747895,3158327,3223863,
3289399,3354935,3420471,3486007,3551543,3617079,3682615,3748151,
3158583,3224119,3289655,3355191,3420727,3486263,3551799,3617335,
3682871,3748407,3158839,3224375,3289911,3355447,3420983,3486519,
3552055,3617591,3683127,3748663,3159095,3224631,3290167,3355703,
3421239,3486775,3552311,3617847,3683383,3748919,3159351,3224887,
3290423,3355959,3421495,3487031,3552567,3618103,3683639,3749175,
3159607,3225143,3290679,3356215,3421751,3487287,3552823,3618359,
3683895,3749431,3159863,3225399,3290935,3356471,3422007,3487543,
3553079,3618615,3684151,3749687,3160119,3225655,3291191,3356727,
3422263,3487799,3553335,3618871,3684407,3749943,3160375,3225911,
3291447,3356983,3422519,3488055,3553591,3619127,3684663,3750199,
3158072,3223608,3289144,3354680,3420216,3485752,3551288,3616824,
3682360,3747896,3158328,3223864,3289400,3354936,3420472,3486008,
3551544,3617080,3682616,3748152,3158584,3224120,3289656,3355192,
3420728,3486264,3551800,3617336,3682872,3748408,3158840,3224376,
3289912,3355448,3420984,3486520,3552056,3617592,3683128,3748664,
3159096,3224632,3290168,3355704,3421240,3486776,3552312,3617848,
3683384,3748920,3159352,3224888,3290424,3355960,3421496,3487032,
3552568,3618104,3683640,3749176,3159608,3225144,3290680,3356216,
3421752,3487288,3552824,3618360,3683896,3749432,3159864,3225400,
3290936,3356472,3422008,3487544,3553080,3618616,3684152,3749688,
3160120,3225656,3291192,3356728,3422264,3487800,3553336,3618872,
3684408,3749944,3160376,3225912,3291448,3356984,3422520,3488056,
3553592,3619128,3684664,3750200,3158073,3223609,3289145,3354681,
3420217,3485753,3551289,3616825,3682361,3747897,3158329,3223865,
3289401,3354937,3420473,3486009,3551545,3617081,3682617,3748153,
3158585,3224121,3289657,3355193,3420729,3486265,3551801,3617337,
3682873,3748409,3158841,3224377,3289913,3355449,3420985,3486521,
3552057,3617593,3683129,3748665,3159097,3224633,3290169,3355705,
3421241,3486777,3552313,3617849,3683385,3748921,3159353,3224889,
3290425,3355961,3421497,3487033,3552569,3618105,3683641,3749177,
3159609,3225145,3290681,3356217,3421753,3487289,3552825,3618361,
3683897,3749433,3159865,3225401,3290937,3356473,3422009,3487545,
3553081,3618617,3684153,3749689,3160121,3225657,3291193,3356729,
3422265,3487801,3553337,3618873,3684409,3749945,3160377,3225913,
3291449,3356985,3422521,3488057,3553593,3619129,3684665,3750201,
};
static inline void itoalt1000(unsigned int n, char *& p)
{
*((unsigned long *)p) = digits[n];
p += ndigits[n];
}
static inline void lzitoalt1000(unsigned int n, char *& p)
{
*((unsigned long *)p) = zdigits[n];
p += 3;
}
static inline void positive_itoa(unsigned int n, char *&p)
{
static unsigned int n0, n1, n2;
if( n < 1000 )
{
itoalt1000(n, p);
}
else if( n < 1000000 )
{
n0 = n / 1000;
n1 = n % 1000;
itoalt1000(n0, p);
lzitoalt1000(n1, p);
}
else if( n < 1000000000 )
{
n0 = n / 1000000;
n1 = n % 1000000;
itoalt1000(n0, p);
n2 = n1 / 1000;
n0 = n1 % 1000;
lzitoalt1000(n2, p);
lzitoalt1000(n0, p);
}
else
{
*p++ = '0' + (n / 1000000000);
n = n % 1000000000;
n0 = n / 1000000;
n1 = n % 1000000;
lzitoalt1000(n0, p);
n2 = n1 / 1000;
n0 = n1 % 1000;
lzitoalt1000(n2, p);
lzitoalt1000(n0, p);
}
}
static inline void fast_itoa(int n, char *& p)
{
if( n >= 0 )
positive_itoa(n, p);
else
{
*p++ = '-';
positive_itoa(-n, p);
}
}
static inline void fast_utoa(int n, char *& p)
{
positive_itoa(n, p);
}
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
static unsigned long ndigits[1000] = {
1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
};
static unsigned long digits[1000] = {
48,49,50,51,52,53,54,55,
56,57,12337,12593,12849,13105,13361,13617,
13873,14129,14385,14641,12338,12594,12850,13106,
13362,13618,13874,14130,14386,14642,12339,12595,
12851,13107,13363,13619,13875,14131,14387,14643,
12340,12596,12852,13108,13364,13620,13876,14132,
14388,14644,12341,12597,12853,13109,13365,13621,
13877,14133,14389,14645,12342,12598,12854,13110,
13366,13622,13878,14134,14390,14646,12343,12599,
12855,13111,13367,13623,13879,14135,14391,14647,
12344,12600,12856,13112,13368,13624,13880,14136,
14392,14648,12345,12601,12857,13113,13369,13625,
13881,14137,14393,14649,3158065,3223601,3289137,3354673,
3420209,3485745,3551281,3616817,3682353,3747889,3158321,3223857,
3289393,3354929,3420465,3486001,3551537,3617073,3682609,3748145,
3158577,3224113,3289649,3355185,3420721,3486257,3551793,3617329,
3682865,3748401,3158833,3224369,3289905,3355441,3420977,3486513,
3552049,3617585,3683121,3748657,3159089,3224625,3290161,3355697,
3421233,3486769,3552305,3617841,3683377,3748913,3159345,3224881,
3290417,3355953,3421489,3487025,3552561,3618097,3683633,3749169,
3159601,3225137,3290673,3356209,3421745,3487281,3552817,3618353,
3683889,3749425,3159857,3225393,3290929,3356465,3422001,3487537,
3553073,3618609,3684145,3749681,3160113,3225649,3291185,3356721,
3422257,3487793,3553329,3618865,3684401,3749937,3160369,3225905,
3291441,3356977,3422513,3488049,3553585,3619121,3684657,3750193,
3158066,3223602,3289138,3354674,3420210,3485746,3551282,3616818,
3682354,3747890,3158322,3223858,3289394,3354930,3420466,3486002,
3551538,3617074,3682610,3748146,3158578,3224114,3289650,3355186,
3420722,3486258,3551794,3617330,3682866,3748402,3158834,3224370,
3289906,3355442,3420978,3486514,3552050,3617586,3683122,3748658,
3159090,3224626,3290162,3355698,3421234,3486770,3552306,3617842,
3683378,3748914,3159346,3224882,3290418,3355954,3421490,3487026,
3552562,3618098,3683634,3749170,3159602,3225138,3290674,3356210,
3421746,3487282,3552818,3618354,3683890,3749426,3159858,3225394,
3290930,3356466,3422002,3487538,3553074,3618610,3684146,3749682,
3160114,3225650,3291186,3356722,3422258,3487794,3553330,3618866,
3684402,3749938,3160370,3225906,3291442,3356978,3422514,3488050,
3553586,3619122,3684658,3750194,3158067,3223603,3289139,3354675,
3420211,3485747,3551283,3616819,3682355,3747891,3158323,3223859,
3289395,3354931,3420467,3486003,3551539,3617075,3682611,3748147,
3158579,3224115,3289651,3355187,3420723,3486259,3551795,3617331,
3682867,3748403,3158835,3224371,3289907,3355443,3420979,3486515,
3552051,3617587,3683123,3748659,3159091,3224627,3290163,3355699,
3421235,3486771,3552307,3617843,3683379,3748915,3159347,3224883,
3290419,3355955,3421491,3487027,3552563,3618099,3683635,3749171,
3159603,3225139,3290675,3356211,3421747,3487283,3552819,3618355,
3683891,3749427,3159859,3225395,3290931,3356467,3422003,3487539,
3553075,3618611,3684147,3749683,3160115,3225651,3291187,3356723,
3422259,3487795,3553331,3618867,3684403,3749939,3160371,3225907,
3291443,3356979,3422515,3488051,3553587,3619123,3684659,3750195,
3158068,3223604,3289140,3354676,3420212,3485748,3551284,3616820,
3682356,3747892,3158324,3223860,3289396,3354932,3420468,3486004,
3551540,3617076,3682612,3748148,3158580,3224116,3289652,3355188,
3420724,3486260,3551796,3617332,3682868,3748404,3158836,3224372,
3289908,3355444,3420980,3486516,3552052,3617588,3683124,3748660,
3159092,3224628,3290164,3355700,3421236,3486772,3552308,3617844,
3683380,3748916,3159348,3224884,3290420,3355956,3421492,3487028,
3552564,3618100,3683636,3749172,3159604,3225140,3290676,3356212,
3421748,3487284,3552820,3618356,3683892,3749428,3159860,3225396,
3290932,3356468,3422004,3487540,3553076,3618612,3684148,3749684,
3160116,3225652,3291188,3356724,3422260,3487796,3553332,3618868,
3684404,3749940,3160372,3225908,3291444,3356980,3422516,3488052,
3553588,3619124,3684660,3750196,3158069,3223605,3289141,3354677,
3420213,3485749,3551285,3616821,3682357,3747893,3158325,3223861,
3289397,3354933,3420469,3486005,3551541,3617077,3682613,3748149,
3158581,3224117,3289653,3355189,3420725,3486261,3551797,3617333,
3682869,3748405,3158837,3224373,3289909,3355445,3420981,3486517,
3552053,3617589,3683125,3748661,3159093,3224629,3290165,3355701,
3421237,3486773,3552309,3617845,3683381,3748917,3159349,3224885,
3290421,3355957,3421493,3487029,3552565,3618101,3683637,3749173,
3159605,3225141,3290677,3356213,3421749,3487285,3552821,3618357,
3683893,3749429,3159861,3225397,3290933,3356469,3422005,3487541,
3553077,3618613,3684149,3749685,3160117,3225653,3291189,3356725,
3422261,3487797,3553333,3618869,3684405,3749941,3160373,3225909,
3291445,3356981,3422517,3488053,3553589,3619125,3684661,3750197,
3158070,3223606,3289142,3354678,3420214,3485750,3551286,3616822,
3682358,3747894,3158326,3223862,3289398,3354934,3420470,3486006,
3551542,3617078,3682614,3748150,3158582,3224118,3289654,3355190,
3420726,3486262,3551798,3617334,3682870,3748406,3158838,3224374,
3289910,3355446,3420982,3486518,3552054,3617590,3683126,3748662,
3159094,3224630,3290166,3355702,3421238,3486774,3552310,3617846,
3683382,3748918,3159350,3224886,3290422,3355958,3421494,3487030,
3552566,3618102,3683638,3749174,3159606,3225142,3290678,3356214,
3421750,3487286,3552822,3618358,3683894,3749430,3159862,3225398,
3290934,3356470,3422006,3487542,3553078,3618614,3684150,3749686,
3160118,3225654,3291190,3356726,3422262,3487798,3553334,3618870,
3684406,3749942,3160374,3225910,3291446,3356982,3422518,3488054,
3553590,3619126,3684662,3750198,3158071,3223607,3289143,3354679,
3420215,3485751,3551287,3616823,3682359,3747895,3158327,3223863,
3289399,3354935,3420471,3486007,3551543,3617079,3682615,3748151,
3158583,3224119,3289655,3355191,3420727,3486263,3551799,3617335,
3682871,3748407,3158839,3224375,3289911,3355447,3420983,3486519,
3552055,3617591,3683127,3748663,3159095,3224631,3290167,3355703,
3421239,3486775,3552311,3617847,3683383,3748919,3159351,3224887,
3290423,3355959,3421495,3487031,3552567,3618103,3683639,3749175,
3159607,3225143,3290679,3356215,3421751,3487287,3552823,3618359,
3683895,3749431,3159863,3225399,3290935,3356471,3422007,3487543,
3553079,3618615,3684151,3749687,3160119,3225655,3291191,3356727,
3422263,3487799,3553335,3618871,3684407,3749943,3160375,3225911,
3291447,3356983,3422519,3488055,3553591,3619127,3684663,3750199,
3158072,3223608,3289144,3354680,3420216,3485752,3551288,3616824,
3682360,3747896,3158328,3223864,3289400,3354936,3420472,3486008,
3551544,3617080,3682616,3748152,3158584,3224120,3289656,3355192,
3420728,3486264,3551800,3617336,3682872,3748408,3158840,3224376,
3289912,3355448,3420984,3486520,3552056,3617592,3683128,3748664,
3159096,3224632,3290168,3355704,3421240,3486776,3552312,3617848,
3683384,3748920,3159352,3224888,3290424,3355960,3421496,3487032,
3552568,3618104,3683640,3749176,3159608,3225144,3290680,3356216,
3421752,3487288,3552824,3618360,3683896,3749432,3159864,3225400,
3290936,3356472,3422008,3487544,3553080,3618616,3684152,3749688,
3160120,3225656,3291192,3356728,3422264,3487800,3553336,3618872,
3684408,3749944,3160376,3225912,3291448,3356984,3422520,3488056,
3553592,3619128,3684664,3750200,3158073,3223609,3289145,3354681,
3420217,3485753,3551289,3616825,3682361,3747897,3158329,3223865,
3289401,3354937,3420473,3486009,3551545,3617081,3682617,3748153,
3158585,3224121,3289657,3355193,3420729,3486265,3551801,3617337,
3682873,3748409,3158841,3224377,3289913,3355449,3420985,3486521,
3552057,3617593,3683129,3748665,3159097,3224633,3290169,3355705,
3421241,3486777,3552313,3617849,3683385,3748921,3159353,3224889,
3290425,3355961,3421497,3487033,3552569,3618105,3683641,3749177,
3159609,3225145,3290681,3356217,3421753,3487289,3552825,3618361,
3683897,3749433,3159865,3225401,3290937,3356473,3422009,3487545,
3553081,3618617,3684153,3749689,3160121,3225657,3291193,3356729,
3422265,3487801,3553337,3618873,3684409,3749945,3160377,3225913,
3291449,3356985,3422521,3488057,3553593,3619129,3684665,3750201,
};
static unsigned long zdigits[1000] = {
3158064,3223600,3289136,3354672,3420208,3485744,3551280,3616816,
3682352,3747888,3158320,3223856,3289392,3354928,3420464,3486000,
3551536,3617072,3682608,3748144,3158576,3224112,3289648,3355184,
3420720,3486256,3551792,3617328,3682864,3748400,3158832,3224368,
3289904,3355440,3420976,3486512,3552048,3617584,3683120,3748656,
3159088,3224624,3290160,3355696,3421232,3486768,3552304,3617840,
3683376,3748912,3159344,3224880,3290416,3355952,3421488,3487024,
3552560,3618096,3683632,3749168,3159600,3225136,3290672,3356208,
3421744,3487280,3552816,3618352,3683888,3749424,3159856,3225392,
3290928,3356464,3422000,3487536,3553072,3618608,3684144,3749680,
3160112,3225648,3291184,3356720,3422256,3487792,3553328,3618864,
3684400,3749936,3160368,3225904,3291440,3356976,3422512,3488048,
3553584,3619120,3684656,3750192,3158065,3223601,3289137,3354673,
3420209,3485745,3551281,3616817,3682353,3747889,3158321,3223857,
3289393,3354929,3420465,3486001,3551537,3617073,3682609,3748145,
3158577,3224113,3289649,3355185,3420721,3486257,3551793,3617329,
3682865,3748401,3158833,3224369,3289905,3355441,3420977,3486513,
3552049,3617585,3683121,3748657,3159089,3224625,3290161,3355697,
3421233,3486769,3552305,3617841,3683377,3748913,3159345,3224881,
3290417,3355953,3421489,3487025,3552561,3618097,3683633,3749169,
3159601,3225137,3290673,3356209,3421745,3487281,3552817,3618353,
3683889,3749425,3159857,3225393,3290929,3356465,3422001,3487537,
3553073,3618609,3684145,3749681,3160113,3225649,3291185,3356721,
3422257,3487793,3553329,3618865,3684401,3749937,3160369,3225905,
3291441,3356977,3422513,3488049,3553585,3619121,3684657,3750193,
3158066,3223602,3289138,3354674,3420210,3485746,3551282,3616818,
3682354,3747890,3158322,3223858,3289394,3354930,3420466,3486002,
3551538,3617074,3682610,3748146,3158578,3224114,3289650,3355186,
3420722,3486258,3551794,3617330,3682866,3748402,3158834,3224370,
3289906,3355442,3420978,3486514,3552050,3617586,3683122,3748658,
3159090,3224626,3290162,3355698,3421234,3486770,3552306,3617842,
3683378,3748914,3159346,3224882,3290418,3355954,3421490,3487026,
3552562,3618098,3683634,3749170,3159602,3225138,3290674,3356210,
3421746,3487282,3552818,3618354,3683890,3749426,3159858,3225394,
3290930,3356466,3422002,3487538,3553074,3618610,3684146,3749682,
3160114,3225650,3291186,3356722,3422258,3487794,3553330,3618866,
3684402,3749938,3160370,3225906,3291442,3356978,3422514,3488050,
3553586,3619122,3684658,3750194,3158067,3223603,3289139,3354675,
3420211,3485747,3551283,3616819,3682355,3747891,3158323,3223859,
3289395,3354931,3420467,3486003,3551539,3617075,3682611,3748147,
3158579,3224115,3289651,3355187,3420723,3486259,3551795,3617331,
3682867,3748403,3158835,3224371,3289907,3355443,3420979,3486515,
3552051,3617587,3683123,3748659,3159091,3224627,3290163,3355699,
3421235,3486771,3552307,3617843,3683379,3748915,3159347,3224883,
3290419,3355955,3421491,3487027,3552563,3618099,3683635,3749171,
3159603,3225139,3290675,3356211,3421747,3487283,3552819,3618355,
3683891,3749427,3159859,3225395,3290931,3356467,3422003,3487539,
3553075,3618611,3684147,3749683,3160115,3225651,3291187,3356723,
3422259,3487795,3553331,3618867,3684403,3749939,3160371,3225907,
3291443,3356979,3422515,3488051,3553587,3619123,3684659,3750195,
3158068,3223604,3289140,3354676,3420212,3485748,3551284,3616820,
3682356,3747892,3158324,3223860,3289396,3354932,3420468,3486004,
3551540,3617076,3682612,3748148,3158580,3224116,3289652,3355188,
3420724,3486260,3551796,3617332,3682868,3748404,3158836,3224372,
3289908,3355444,3420980,3486516,3552052,3617588,3683124,3748660,
3159092,3224628,3290164,3355700,3421236,3486772,3552308,3617844,
3683380,3748916,3159348,3224884,3290420,3355956,3421492,3487028,
3552564,3618100,3683636,3749172,3159604,3225140,3290676,3356212,
3421748,3487284,3552820,3618356,3683892,3749428,3159860,3225396,
3290932,3356468,3422004,3487540,3553076,3618612,3684148,3749684,
3160116,3225652,3291188,3356724,3422260,3487796,3553332,3618868,
3684404,3749940,3160372,3225908,3291444,3356980,3422516,3488052,
3553588,3619124,3684660,3750196,3158069,3223605,3289141,3354677,
3420213,3485749,3551285,3616821,3682357,3747893,3158325,3223861,
3289397,3354933,3420469,3486005,3551541,3617077,3682613,3748149,
3158581,3224117,3289653,3355189,3420725,3486261,3551797,3617333,
3682869,3748405,3158837,3224373,3289909,3355445,3420981,3486517,
3552053,3617589,3683125,3748661,3159093,3224629,3290165,3355701,
3421237,3486773,3552309,3617845,3683381,3748917,3159349,3224885,
3290421,3355957,3421493,3487029,3552565,3618101,3683637,3749173,
3159605,3225141,3290677,3356213,3421749,3487285,3552821,3618357,
3683893,3749429,3159861,3225397,3290933,3356469,3422005,3487541,
3553077,3618613,3684149,3749685,3160117,3225653,3291189,3356725,
3422261,3487797,3553333,3618869,3684405,3749941,3160373,3225909,
3291445,3356981,3422517,3488053,3553589,3619125,3684661,3750197,
3158070,3223606,3289142,3354678,3420214,3485750,3551286,3616822,
3682358,3747894,3158326,3223862,3289398,3354934,3420470,3486006,
3551542,3617078,3682614,3748150,3158582,3224118,3289654,3355190,
3420726,3486262,3551798,3617334,3682870,3748406,3158838,3224374,
3289910,3355446,3420982,3486518,3552054,3617590,3683126,3748662,
3159094,3224630,3290166,3355702,3421238,3486774,3552310,3617846,
3683382,3748918,3159350,3224886,3290422,3355958,3421494,3487030,
3552566,3618102,3683638,3749174,3159606,3225142,3290678,3356214,
3421750,3487286,3552822,3618358,3683894,3749430,3159862,3225398,
3290934,3356470,3422006,3487542,3553078,3618614,3684150,3749686,
3160118,3225654,3291190,3356726,3422262,3487798,3553334,3618870,
3684406,3749942,3160374,3225910,3291446,3356982,3422518,3488054,
3553590,3619126,3684662,3750198,3158071,3223607,3289143,3354679,
3420215,3485751,3551287,3616823,3682359,3747895,3158327,3223863,
3289399,3354935,3420471,3486007,3551543,3617079,3682615,3748151,
3158583,3224119,3289655,3355191,3420727,3486263,3551799,3617335,
3682871,3748407,3158839,3224375,3289911,3355447,3420983,3486519,
3552055,3617591,3683127,3748663,3159095,3224631,3290167,3355703,
3421239,3486775,3552311,3617847,3683383,3748919,3159351,3224887,
3290423,3355959,3421495,3487031,3552567,3618103,3683639,3749175,
3159607,3225143,3290679,3356215,3421751,3487287,3552823,3618359,
3683895,3749431,3159863,3225399,3290935,3356471,3422007,3487543,
3553079,3618615,3684151,3749687,3160119,3225655,3291191,3356727,
3422263,3487799,3553335,3618871,3684407,3749943,3160375,3225911,
3291447,3356983,3422519,3488055,3553591,3619127,3684663,3750199,
3158072,3223608,3289144,3354680,3420216,3485752,3551288,3616824,
3682360,3747896,3158328,3223864,3289400,3354936,3420472,3486008,
3551544,3617080,3682616,3748152,3158584,3224120,3289656,3355192,
3420728,3486264,3551800,3617336,3682872,3748408,3158840,3224376,
3289912,3355448,3420984,3486520,3552056,3617592,3683128,3748664,
3159096,3224632,3290168,3355704,3421240,3486776,3552312,3617848,
3683384,3748920,3159352,3224888,3290424,3355960,3421496,3487032,
3552568,3618104,3683640,3749176,3159608,3225144,3290680,3356216,
3421752,3487288,3552824,3618360,3683896,3749432,3159864,3225400,
3290936,3356472,3422008,3487544,3553080,3618616,3684152,3749688,
3160120,3225656,3291192,3356728,3422264,3487800,3553336,3618872,
3684408,3749944,3160376,3225912,3291448,3356984,3422520,3488056,
3553592,3619128,3684664,3750200,3158073,3223609,3289145,3354681,
3420217,3485753,3551289,3616825,3682361,3747897,3158329,3223865,
3289401,3354937,3420473,3486009,3551545,3617081,3682617,3748153,
3158585,3224121,3289657,3355193,3420729,3486265,3551801,3617337,
3682873,3748409,3158841,3224377,3289913,3355449,3420985,3486521,
3552057,3617593,3683129,3748665,3159097,3224633,3290169,3355705,
3421241,3486777,3552313,3617849,3683385,3748921,3159353,3224889,
3290425,3355961,3421497,3487033,3552569,3618105,3683641,3749177,
3159609,3225145,3290681,3356217,3421753,3487289,3552825,3618361,
3683897,3749433,3159865,3225401,3290937,3356473,3422009,3487545,
3553081,3618617,3684153,3749689,3160121,3225657,3291193,3356729,
3422265,3487801,3553337,3618873,3684409,3749945,3160377,3225913,
3291449,3356985,3422521,3488057,3553593,3619129,3684665,3750201,
};
static inline void itoalt1000(unsigned int n, char *& p)
{
*((unsigned long *)p) = digits[n];
p += ndigits[n];
}
static inline void lzitoalt1000(unsigned int n, char *& p)
{
*((unsigned long *)p) = zdigits[n];
p += 3;
}
static inline void positive_itoa(unsigned int n, char *&p)
{
static unsigned int n0, n1, n2;
if( n < 1000 )
{
itoalt1000(n, p);
}
else if( n < 1000000 )
{
n0 = n / 1000;
n1 = n % 1000;
itoalt1000(n0, p);
lzitoalt1000(n1, p);
}
else if( n < 1000000000 )
{
n0 = n / 1000000;
n1 = n % 1000000;
itoalt1000(n0, p);
n2 = n1 / 1000;
n0 = n1 % 1000;
lzitoalt1000(n2, p);
lzitoalt1000(n0, p);
}
else
{
*p++ = '0' + (n / 1000000000);
n = n % 1000000000;
n0 = n / 1000000;
n1 = n % 1000000;
lzitoalt1000(n0, p);
n2 = n1 / 1000;
n0 = n1 % 1000;
lzitoalt1000(n2, p);
lzitoalt1000(n0, p);
}
}
static inline void fast_itoa(int n, char *& p)
{
if( n >= 0 )
positive_itoa(n, p);
else
{
*p++ = '-';
positive_itoa(-n, p);
}
}
static inline void fast_utoa(int n, char *& p)
{
positive_itoa(n, p);
}
Re: Два въпроса
(Пояснение: това е част от частично - в смисъл на само някои %формати - пренаписване на printf, което се оказа доста успешно - на моите тестови данни беше близо 10 пъти по-бързо от библиотечното. Въпрос с награда бонбонче: защо модифицира подадения указател към изходния буфер?)
Re: Два въпроса
Ахааа :) Ми като панираме едното крилце, вадиме го от тигана и панираме следващото :)
Re: Два въпроса
Добре де, мога да разбера защо модифицира указателя във вътрешните извиквания, ама защо и навън? Никъде не слагаш 0 на края на стринга, това има ли нещо общо?
бтв, верно си е извращение :)
______________
истината е увивно растение
бтв, верно си е извращение :)
______________
истината е увивно растение
Re: Два въпроса
Ами защото това всъщност не е "навън", това е част от цяла реализация на printf и трябва да можем лесно да продължим да добавяме към низа.
Маниашко!
Аз лично бих ползвал проверка за броя на цифрите, а не таблица - ще спести 4K код, а може и да е по-бързо заради разните там кешове и т.н.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: Маниашко!
Мда, сигурно ще е по-добре.
При синтетичен тест няма да се усети, но в реално приложение допълнителния трафик през кеша ще забави.
А дали не може да се сметне броя на цифрите?
При синтетичен тест няма да се усети, но в реално приложение допълнителния трафик през кеша ще забави.
А дали не може да се сметне броя на цифрите?
Re: Два въпроса
Откровенно казано, нямах в предвид такова извръщение...и въпреки всичко има опреациите / %
А по идеята с масива от стингове - да числото е в интервала 0-255. Единствения малък проблем, ама наистина малък е това, че изисква минимум
(10 * 1) + (90 * 2) + (156 * 3) байта за масива, а аз НЯМАМ ТОЛКОВА ПАМЕТ!!!



А по идеята с масива от стингове - да числото е в интервала 0-255. Единствения малък проблем, ама наистина малък е това, че изисква минимум
(10 * 1) + (90 * 2) + (156 * 3) байта за масива, а аз НЯМАМ ТОЛКОВА ПАМЕТ!!!
Re: Два въпроса
Имам 4К за програма и константни данни. А да, още 256 байта за променливи.





Re: Два въпроса
Малиии, тва ша да е некой RISC контролер. Нямаш и деление ( м/у другото целочислено деление се пише много лесно ако имаш 4-5 свободни регистъра ). Ще помисля малко и ако се сетя нещо ще ти кажа.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_