На Python написать программы Дано число n из чисел 1,4,9,16,25, напечатать те, которые не превышают n' 'Напечатать числа 1.0, 1.5, 2.0, ... 13.5. Инструкцию for не использовать'
Первый решения это перевести данное число в десятичную систему счисления по формуле:
И выполнить деление.
Но можно и проще. Рассмотрим приведённую формулу для двоичной системы счисления:
Заметим, что каждое слагаемое, начиная c a₂ и левее, кратно 4. Т.к. далее будут a₃·8, a₄·16, a₅·32, ...
Алфавит двоичной системы счисления содержит только 0 и 1. Поэтому для кратности 4 две цифры с левого края должны быть нулями. Иначе при делении на 4 будет остаток 1, 2 или 2+1=3.
Корректное задание смотри в приложении.
Первый решения это перевести данное число в десятичную систему счисления по формуле:
И выполнить деление.
Но можно и проще. Рассмотрим приведённую формулу для двоичной системы счисления:
Заметим, что каждое слагаемое, начиная c a₂ и левее, кратно 4. Т.к. далее будут a₃·8, a₄·16, a₅·32, ...
Алфавит двоичной системы счисления содержит только 0 и 1. Поэтому для кратности 4 две цифры с левого края должны быть нулями. Иначе при делении на 4 будет остаток 1, 2 или 2+1=3.
Таким образом подходят числа под 1 и 2 номерами.
ответ: 1) 10100₂; 2) 1110100₂
using System;
class Program
{
private static int GetThird(int num)
{
var result = 0;
var kv = num * num;
if (num % 2 == 0)
{
for (var i = num / 2; i > 0; i--)
{
result += kv - i * 2 + 1;
}
for (var i = 0; i < num / 2; i++)
{
result += kv + i * 2 + 1;
}
}
else
{
for (var i = (num - 1) / 2; i > 0; i--)
{
result += kv - i * 2;
}
result += kv;
for (var i = 0; i < (num - 1) / 2; i++)
{
result += kv + i * 2 + 2;
}
}
return result;
}
//оптимизированное свое решение, коротко и ясно
private static int GetThirdOptimized(int num)
{
var result = 0;
var kv = num * num - num + 1;
for (var i = 0; i < num; i++)
{
result += kv + i * 2;
}
return result;
}
private static void Main()
{
Console.WriteLine("Введите натуральноe числo ");
var i = int.Parse(Console.ReadLine());
Console.WriteLine("{0}^3 = {1} = {2} = {3}", i, i * i * i, GetThird(i), GetThirdOptimized(i));
Console.Read();
}
}