Как показало исследование, узор является симпатичным, если в нем нигде не встречается квадрата
2х2 метра, полностью покрытого плитками одного цвета. на рисунке 1 показаны примеры различных
симпатичных узоров, а на рисунке 2 – несимпатичных.
для составления финансового плана директору необходимо узнать, сколько клиентов он сможет
обслужить, прежде чем симпатичные узоры данного размера закончатся. ему!
формат входных данных
на первой строке входного файла находятся два положительных целых числа, разделенные
пробелом - мим (15 м . n < 30 ).
формат выходных данных
выведите в выходной файл единственное число — количество различных симпатичных узоров,
которые можно выложить во дворе размера m x n. узоры, получающиеся друг из друга сдвигом,
поворотом или отражением считаются различными.
примеры:
f.out
f.in
14
22
322
33
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;
}
}