1) 221₃ = 25₁₀
2) 444₅ = 124₁₀
3) 232₄ = 46₁₀
4) 1000₂ = 8₁₀
Объяснение:
1) 222₃ = 2 * 3² + 2 * 3¹ + 2 * 3⁰ = 2 * 9 + 2 * 3 + 2 * 1 = 18 + 6 + 2 = 26₁₀
222₃
-
1₃
221₃
221₃ = 2 * 3² + 2 * 3¹ + 1 * 3⁰ = 2 * 9 + 2 * 3 + 1 * 1 = 18 + 6 + 1 = 25₁₀
2) 1000₅ = 1 * 5³ + 0 * 5² + 0 * 5¹ + 0 * 5⁰ = 1 * 125 + 0 * 25 + 0 * 5 + 0 * 1 = 125₁₀
1000₅
-
1₅
444₅
1. Занимаем 1 из 1 остаётся 0 (в следующий разряд переносится 10₅)
2. Занимаем 1 из 10 остаётся 4₅ (в следующий разряд переносится 10₅, 10₅ - 1₅ = 4₅)
3. Занимаем 1 из 10 остаётся 4₅ (в следующий разряд переносится 10₅, 10₅ - 1₅ = 4₅)
4. Вычитаем 1 из 10 получаем 4₅ (10₅ - 1₅ = 4₅)
444₅ = 4 * 5² + 4 * 5¹ + 4 * 5⁰ = 4 * 25 + 4 * 5 + 4 * 1 = 100 + 25 + 4 = 124₁₀
3) 233₄ = 2 * 4² + 3 * 4¹ + 3 * 4⁰ = 2 * 16 + 3 * 4 + 3 * 1 = 32 + 12 + 3 = 47₁₀
233₄
-
1₄
232₄
232₄ = 2 * 4² + 3 * 4¹ + 2 * 4⁰ = 2 * 16 + 3 * 4 + 2 * 1 = 32 + 12 + 2 = 46₁₀
4) 1001₂ = 1 * 2³ + 0 * 2² + 0 * 2¹ + 1 * 2⁰ = 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 8 + 1 = 9₁₀
1001₂
-
1₂
1000₂
1000₂ = 1 * 2³ + 0 * 2² + 0 * 2¹ + 0 * 2⁰ = 1 * 8 + 0 * 4 + 0 * 2 + 0 * 1 = 8 + 1 = 8₁₀
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