Первый решения это перевести данное число в десятичную систему счисления по формуле:
И выполнить деление.
Но можно и проще. Рассмотрим приведённую формулу для двоичной системы счисления:
Заметим, что каждое слагаемое, начиная c a₂ и левее, кратно 4. Т.к. далее будут a₃·8, a₄·16, a₅·32, ...
Алфавит двоичной системы счисления содержит только 0 и 1. Поэтому для кратности 4 две цифры с левого края должны быть нулями. Иначе при делении на 4 будет остаток 1, 2 или 2+1=3.
Можешь "включить" подробный вывод, если объявишь макрос "#define DEBUG"
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace cool{ class main { static void Main(string[] args) { int u1 = 1, u2 = 2; int l1 = 1, l2 = 1; double a = 0, eps = 0.001; int i = 2; int U, L; double A;
U = u2 + u1; L = l2 + l1; A = (double)U / L;
while (Math.Abs(A - a) > eps || i < 5) { a = A; i++; l1 = l2; u1 = u2; l2 = L; u2 = U;
U = u2 + l2; L = l2 + l1; A = (double)U / L;
#if DEBUG Console.WriteLine("{0} -> {1}|{2}", i, U, L); #endif if (i == 5) Console.WriteLine("Пятый элемент: {0}", A); if (Math.Abs(A - a) < eps) Console.WriteLine("Элемент, отличающийся на менее чем {1}: {0}", A, eps); } } } }
Корректное задание смотри в приложении.
Первый решения это перевести данное число в десятичную систему счисления по формуле:
И выполнить деление.
Но можно и проще. Рассмотрим приведённую формулу для двоичной системы счисления:
Заметим, что каждое слагаемое, начиная 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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cool{
class main
{
static void Main(string[] args)
{
int u1 = 1, u2 = 2;
int l1 = 1, l2 = 1;
double a = 0, eps = 0.001;
int i = 2;
int U, L;
double A;
U = u2 + u1;
L = l2 + l1;
A = (double)U / L;
while (Math.Abs(A - a) > eps || i < 5)
{
a = A;
i++;
l1 = l2; u1 = u2;
l2 = L; u2 = U;
U = u2 + l2;
L = l2 + l1;
A = (double)U / L;
#if DEBUG
Console.WriteLine("{0} -> {1}|{2}", i, U, L);
#endif
if (i == 5)
Console.WriteLine("Пятый элемент: {0}", A);
if (Math.Abs(A - a) < eps)
Console.WriteLine("Элемент, отличающийся на менее чем {1}: {0}", A, eps);
}
}
}
}