Який оператор реалізує дію: Змінній К: Boolean присвоїти значення True, якщо числа A,B,C упорядковані за зростанням, і значення False в протилежному випадку?
1)K := (A<B) And (B<C)
2)K := (A<B) Or (B<C
3)If (A<B) and (B<C) Then K:= True Else K:= False;
4)If (A < B< C) Then K := True Else K := False
Преобразуем выражение
Первые 2 слагаемых при переводе в с. сч. 3 дадут числа вида "10000...00", и количество нулей будет равно величине степени. (Можешь сам у в этом убедиться для чисел с небольшой степенью). Поэтому первые два слагаемых переведутся в число "100...0010000...00", кол-во нулей между единицами равно 66-45 = 21, правее средней единицы = 44.
Число гораздо меньше. Поэтому при вычитании мы будем занимать разряд до тех пор, пока не дойдем до средней единицы, которая станет после этого 0, а все, что правее - двойками (было "100..00100..00", стало "100..00022..22", но только после заёма единицы, ещё нужно довычистывать). Затем проведем вычитание и посмотрим, сколько двоек пришлось убрать для этого.
Переводим .
Вычитаем "100..00100..0000" - 110 = "100..00022..2120"
Кол-во двоек между маркерованными цифрами = 44 - 3 = 41. Добавим ещё одну 2 правее маркерованной единицы = 42 - ответ
using System;
class Program
{
static void Main()
{
int x1 = 2, y1 = 1;
int x2 = 6, y2 = 5;
int x3 = 10, y3 = 1;
var a = Distance(x2, y2, x3, y3);
var b = Distance(x1, y1, x3, y3);
var c = Distance(x2, y2, x1, y1);
Console.WriteLine("S = {0}", Square(a, b, c));
Console.ReadKey();
}
//растояние между точками
static double Distance(int x1, int y1, int x2, int y2)
{
return Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
//формула герона
static double Square(double a, double b, double c)
{
var p = (a + b + c) / 2;
return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
}
// теорема косинусов
static double Angle(double a, double b, double c)
{
return Math.Acos((b * b + c * c - a * a) / (2 * b * c));
}
static bool IsAcuteAngel(double alpha)
{
return alpha < Math.PI / 2;
}
}