оператор присваивания :=
оператор ввода read(x1,x2,...,xn) или readln(x1,x2,...,xn)
оператор вывода write(x1,x2,...,xn) или writeln(x1,x2,...,xn)
условный оператор if условие then оператор 1 else оператор 2
оператор варианта case управляющая переменная of
набор значений1: оператор1;
набор значений2: оператор2;
...
набор значенийn: операторN
else
альтернативный оператор
end;
оператор цикла с предусловиями while ... do
оператор цикла с постусловием repeat ... until
оператор цикла for ... do
оператор break осуществляет немедленный выход из циклов repeat, while, for.
оператор continue начинает новую итерацию цикла, даже если предыдущая не была завершина.
оператор exit осуществляет выход из подпрограммы.
оператор halt прекращает выполнение программы и возвращает код завершения в операционную систему.
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