На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются справа ещё два разряда по следующему правилу:
a) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
b) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 43 и может являться результатом работы алгоритма.
В ответе это число запишите в десятичной системе.
C#
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом
Ответ 46
Код на C#:
Код на C#:

using System;
namespace Temp
{
internal class Program
{
static void Main(string[] args)
{
int N10 = 0, R10 = 0;
string N2 = "", R2 = "";
for(int i = 1; true; i++)
{
N10 = i;
N2 = From10to2(N10);
R2 = Operation(N2);
R10 = From2To10(R2);
Console.WriteLine($"{i}: N10|{N10} = N2|{N2}\n{i}: R2|{R2} = R10|{R10}");
Console.WriteLine("----------------------");
if (R10 > 43)
break;
}
Console.ReadLine();
}
static string From10to2(int N10)
{
string N2 = "";
string temp = "";
for (; N10 > 0; N10 = (int)(N10 / 2))
N2 += $"{N10 % 2}";
for (int i = N2.Length - 1; i >= 0; i--)
{
if (!(temp.Length == 0 && N2[i] == 0))
temp += N2[i];
}
N2 = temp;
return N2;
}
static int From2To10(string N2)
{
int N10 = 0;
for (int i = 0; i < N2.Length; i++)
N10 += (int)Char.GetNumericValue(N2[i]) * (int)Math.Pow(2, N2.Length - 1 - i);
return N10;
}
static string Operation(string N2)
{
for (int i = 0; i < 2; i++)
{
int Sum = 0;
for (int j = 0; j < N2.Length; j++)
Sum += (int)Char.GetNumericValue(N2[j]);
N2 += $"{Sum % 2}";
}
return N2;
}
}
}
Похожие вопросы
- Учитывая целое число n (n>2), напишите метод, который возвращает простые числа из диапазона [2, n].
- Задайте значения M и N. Напишите программу, которая найдёт сумму натуральных элементов в промежутке от M до N.,
- Составление алгоритма и программы вычисления
- Алгоритм для игры на c#
- Помогите пожалуйста написать две программы и составить к ним алгоритм. Ну никак уже не получается...
- С# Разработайте и реализуйте собственный алгоритм, переводящий изображение в градациях серого цвета в цвет.
- Сколько времени займет на С# выполнение этого алгоритма сортировки массива?
- С # Дан двумерный массив целых чисел размером m*n. Заполнить его с клавиатуры.
- Регистрация пользователей и Вход в аккаунт C#(console)
- Найти два неотрицательных вещественных числа a и b, такие что a+b=d и a⋅b=d.