Внекоторой стране автомобильный номер состоит из 9 символов. в качестве символов используют 26 различных букв и десятичные цифры в любом порядке.
каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов, при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов.
найди объём памяти, отводимый этой программой для записи 110 номеров.
Так как целевой яп не указан написал на С#. Пример работы на рисунке 1.
Условия выделены комментариями внутри кода!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Etazhi
{
class Program
{
static void Main(string[] args)
{
const int ET = 9, KV = 4; //Константы
int N;
Console.Write("Введите номер квартиры: ");
if (!int.TryParse(Console.ReadLine(), out N) || N < 1)
{
Console.WriteLine("Некорретный ввод");
return;
}
//Условия [Начало]
int iTop = N / KV + ((N % KV > 0) ? 1 : 0);
int Npd = (iTop-1) / ET + 1;
int Net = (iTop-1) % ET + 1;
//Условия [Конец]
Console.WriteLine("В {0}-этажном доме, где на каждом этаже по {1} квартиры, \nквартира №{2} будет располагаться в {3} подъезде на {4} этаже", ET, KV, N, Npd, Net);
}
}
}
Так как целевой язык программирования не указан, написал на C#.
В главном методе есть две переменные A и B, над которыми производнятся вычисления, а также метод IntToNaturalString(), преобразующий число в его строковую запись на русском языке.
Результат работы на рисутке 1.
Код:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FindPairs
{
class Program
{
static void Main(string[] args)
{
//*Введи свои значения здесь!*//
int A = 46524;
int B = 7353;
int res = Math.Abs(A - B);
Console.WriteLine("Исходная запись результата |{0}-{1}| = {2},", A, B, res);
Console.WriteLine("что на русском языке звучит как \"{0}\".", IntToNaturalString(res));
}
static string IntToNaturalString(int number, string sep = " ")
{
return IntToNaturalString(number.ToString());
}
static string IntToNaturalString(string number, string sep = " ")
{
string result = "";
if (number.Length > 3)
{
string[] numbersClassNames = { "", "тысяч", "миллионов", "биллионов", "триллионов", "квадрилионов", "квинтиллионов" };
int K = number.Length / 3, D = number.Length % 3;
if (D > 0)
result += (IntToNaturalString(number.Substring(0, D)) + " " + numbersClassNames[K] + sep);
for (int i = 0; i < K; i++)
{
result += (IntToNaturalString(number.Substring(D+3*i, 3)) + " " + numbersClassNames[K - 1 - i] + sep);
}
}
else
{
string[] hangred = { "", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот" };
string[] decades = { "", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто" };
string[] ones = { "", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
string[] chst = { "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестрадцать", "восемнадцать", "девятнадцать" };
number = RightFillZeros(number);
int H = int.Parse(number[0].ToString());
int D = int.Parse(number[1].ToString());
int O = int.Parse(number[2].ToString());
result = hangred[H] + " ";
if (D == 1 && O != 0)
result += chst[O];
else
result += decades[D] + " " + ones[O];
}
return result;
}
static string RightFillZeros(string number, int N = 3)
{
if (number.Length < N)
{
number = new string('0', N - number.Length) + number;
}
return number;
}
}
}