c++
#include <iostream>
using namespace std;
int main()
{
unsigned long long int max_numer;
cin >> max_numer;
long long digit_arr[10] = {};
for (int i = 1; i <= max_numer; i++)
{
int j = i;
while (j > 0)
{
digit_arr[j % 10]++;
j /= 10;
}
}
for (int i = 0; i < 10; i++)
{
cout << digit_arr[i] << " ";
}
}
Объяснение:
Работает на посылках до 100000. Дальше идёт интересная закономерность по которой изменяется.
unsigned long long int digit_arr[10] = {};
int z = max_numer / 100000;
if (z == 1)
{
digit_arr[0] += 38894;
digit_arr[1] += 50001;
digit_arr[2] += 50000;
digit_arr[3] += 50000;
digit_arr[4] += 50000;
digit_arr[5] += 50000;
digit_arr[6] += 50000;
digit_arr[7] += 50000;
digit_arr[8] += 50000;
digit_arr[9] += 50000;
}
if (z == 2)
{
digit_arr[0] += 88894;
digit_arr[1] += 200000;
digit_arr[2] += 100001;
digit_arr[3] += 100000;
digit_arr[4] += 100000;
digit_arr[5] += 100000;
digit_arr[6] += 100000;
digit_arr[7] += 100000;
digit_arr[8] += 100000;
digit_arr[9] += 100000;
}
if (z == 3)
{
digit_arr[0] += 138894;
digit_arr[1] += 250000;
digit_arr[2] += 250000;
digit_arr[3] += 150001;
digit_arr[4] += 150000;
digit_arr[5] += 150000;
digit_arr[6] += 150000;
digit_arr[7] += 150000;
digit_arr[8] += 150000;
digit_arr[9] += 150000;
}
if (z == 4)
{
digit_arr[0] += 188894;
digit_arr[1] += 300000;
digit_arr[2] += 300000;
digit_arr[3] += 300000;
digit_arr[4] += 200001;
digit_arr[5] += 200000;
digit_arr[6] += 200000;
digit_arr[7] += 200000;
digit_arr[8] += 200000;
digit_arr[9] += 200000;
}
if (z == 5)
{
digit_arr[0] += 238894;
digit_arr[1] += 350000;
digit_arr[2] += 350000;
digit_arr[3] += 350000;
digit_arr[4] += 350000;
digit_arr[5] += 250001;
digit_arr[6] += 250000;
digit_arr[7] += 250000;
digit_arr[8] += 250000;
digit_arr[9] += 250000;
}
if (z == 6)
{
digit_arr[0] += 288894;
digit_arr[1] += 400000;
digit_arr[2] += 400000;
digit_arr[3] += 400000;
digit_arr[4] += 400000;
digit_arr[5] += 400000;
digit_arr[6] += 300001;
digit_arr[7] += 300000;
digit_arr[8] += 300000;
digit_arr[9] += 300000;
}
if (z == 7)
{
digit_arr[0] += 338894;
digit_arr[1] += 450000;
digit_arr[2] += 450000;
digit_arr[3] += 450000;
digit_arr[4] += 450000;
digit_arr[5] += 450000;
digit_arr[6] += 450000;
digit_arr[7] += 350001;
digit_arr[8] += 350000;
digit_arr[9] += 350000;
}
if (z == 8)
{
digit_arr[0] += 388894;
digit_arr[1] += 500000;
digit_arr[2] += 500000;
digit_arr[3] += 500000;
digit_arr[4] += 500000;
digit_arr[5] += 500000;
digit_arr[6] += 500000;
digit_arr[7] += 500000;
digit_arr[8] += 400001;
digit_arr[9] += 400000;
}
if (z == 9)
{
digit_arr[0] += 438894;
digit_arr[1] += 550000;
digit_arr[2] += 550000;
digit_arr[3] += 550000;
digit_arr[4] += 550000;
digit_arr[5] += 550000;
digit_arr[6] += 550000;
digit_arr[7] += 550000;
digit_arr[8] += 550000;
digit_arr[9] += 450001;
}
Я попробовал сделать костыль, но там этих костылей до скончания веков писать. Проще сделать алгоритм автоматически рассчитывающий по заметной закономерности, который вычисляет количество цифр max_numer / 100000, и к нему добавить алгоритм, который вычисляет количество цифр в max_numer % 100000
Поделитесь своими знаниями, ответьте на вопрос:
Переданное сообщение содержало 1125 байтов информации, было записано 8-ми символьным алфавитом и занимало 5 страниц. каждая страница содержала 25 строк. сколько символов в строке?
N=8
i=3
K=I/i
I=1125 байт=9000 бит
K=9000/3=3000 сим.
К=5×25=125
Значит в строке 3000/125=24 сим
ответ:в строке 24 символа
Надеюсь Успехов))