PHP код:
/*======== Настройки =========================================================*/
#include <float>
const PROFILER_ITERATIONS_MAJOR = 100_000;
const PROFILER_ITERATIONS_MINOR = 10;
new const code_snippets_names[3][] =
{
{"VVWVV"},
{"DeimoS"},
{"Daniel_Cortez"}
};
stock
GetNumberOfDigits_VVWVV({Float,_}:number)
{
return number != 0 ? floatround(floatlog(floatabs(number))) + 1 : 1;
}
stock GetCountsOfDigits_DeimoS(number)
{
if(number < 100_000)
{
if(number < 100)
{
if(number < 10)
return 1;
else
return 2;
}
else
{
if(number < 1_000)
return 3;
else
{
if(number < 10_000)
return 4;
else
return 5;
}
}
}
else
{
if(number < 10_000_000)
{
if(number < 1_000_000)
return 6;
else
return 7;
}
else
{
if(number < 100_000_000)
return 8;
else
{
if(number < 1_000_000_000)
return 9;
else
return 10;
}
}
}
}
stock GetNumberOfDigits_DC(number)
{
if (number < 100_000)
{
if (number < 100)
return 1 + _:(number >= 10);
if (number < 10_000)
return 3 + _:(number >= 1_000);
return 5;
}
if (number < 10_000_000)
return 6 + _:(number >= 1_000_000);
if (number < 1_000_000_000)
return 8 + _:(number >= 100_000_000);
return 10;
}
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, ..., 90, 100, 200, ..., 2_000_000_000
static numbers[9 * 9 + 3];
#define Prerequisites();\
numbers[0] = 0; \
for (new i = 0, inc = 1, n = 1; i < 9; ++i, inc *= 10) \
for (new j = 1; j < 10; ++j, n += inc) \
numbers[i * 9 + j] = n; \
numbers[82] = 1_000_000_000; \
numbers[83] = 2_000_000_000; \
static i;
#define CodeSnippet0();\
for (i = 0; i < sizeof(numbers); ++i) \
GetNumberOfDigits_VVWVV(numbers[i]);
#define CodeSnippet1();\
for (i = 0; i < sizeof(numbers); ++i) \
GetCountsOfDigits_DeimoS(numbers[i]);
#define CodeSnippet2();\
for (i = 0; i < sizeof(numbers); ++i) \
GetNumberOfDigits_DC(numbers[i]);
/*======== Конец настроек ===================================================*/