// tema
//P1();
//P2();
//P3();
//P4();
//P5();
//P6();
//D1(10);
//D2(10);
//D4(10);
///
/// 1
/// 1 1
/// 2 1
/// 1 2 1 1
/// 1 1 1 2 2 1
/// 3 1 2 2 1 1
/// 1 3 1 1 2 2 2 1
/// 1 1 1 3 2 1 3 2 1 1
///
/// numarul de linii care se afiseaza
static void L1(int n)
{
}
///
/// *******
/// *** ***
/// ** **
/// * *
/// ** **
/// *** ***
/// *******
///
/// v trebuie sa fie impar
///
//sper ca v este numarul de linii si probabil ca este
//defapt pare ca v este si numarul maxim de stelute de pe o linie
static void D4(int v)
{
}
///
/// *
/// * *
/// * *
/// * * * *
///
///
///
static void D3(int n)
{
// prima linie
for (int i = 0; i < n - 1; i++)
Console.Write(' ');
Console.WriteLine("*");
// liniile din mijloc
int ns1 = n - 2, ns2 = 1;
for (int k = 2; k <= n - 1; k++)
{
for (int i = 0; i < ns1; i++)
Console.Write(' ');
Console.Write("*");
for (int i = 0; i < ns2; i++)
Console.Write(' ');
Console.WriteLine("*");
ns1--;
ns2 += 2;
}
// ultima linie
for (int i = 0; i < n; i++)
Console.Write("* ");
Console.WriteLine();
}
///
/// *
/// **
/// ***
/// ****
/// ****
/// ***
/// **
/// *
///
///
///
static void D2(int n)
{
D1(n);
int n_sp = n, n_st = n;
for (int i = 0; i < n; i++)
{
string spatii = new string(' ', n_sp);
string stelute = new string('*', n_st);
Console.WriteLine($"{spatii}{stelute}");
n_sp++;
n_st--;
}
}
///
/// n(n+1)(2n+1)(3n^2+3n−1)/30.
///14+24+...+n**4
///
///
static void P6()
{
}
///
/// S = 1^3 + 2^3 +...+ n^3
///
///
static void P5()
{
int n = 10;
int suma = (int)Math.Pow(n * (n + 1) / 2, 2);
Console.WriteLine(suma);
}
///
/// S = (1^2+2^2+...+n^2) mod 1.000.000.007;
///
static void P4()
{
// O(1) - algoritm constant
long n = 1000000000;
long M = 1000000007;
n = int.Parse(Console.ReadLine());
//long suma = n * (n + 1) * (2 * n + 1) / 6 % M;
long a = n;
long b = n + 1;
long c = (2 * n + 1);
if (a % 2 == 0)
a = a / 2;
else
b = b / 2;
if (a % 3 == 0)
a = a / 3;
else if (b % 3 == 0)
b = b / 3;
else
c = c / 3;
// (a + b) mod M = (a mod M + b mod M) mod M
// (a * b) mod M = (a mod M * b mod M) mod M
long suma = a % M * b % M * c % M;
Console.WriteLine(suma);
}
///
/// S = 1^2+2^2+...+n^2;
///
static void P3()
{
// O(n) - algoritm liniar
int n;
n = int.Parse(Console.ReadLine());
long suma = 0;
for (int i = 1; i <= n; i++)
suma = suma + i * i;
Console.WriteLine(suma);
}
static bool ExtractNumber(out int n)
{
Console.WriteLine("Introduceti un numar natural: ");
string line;
line = Console.ReadLine();
try
{
n = int.Parse(line);
}
catch (FormatException)
{
Console.WriteLine("Nu s-a introdus un numar");
n = -1;
return false;
}
}
///
/// Functia calculeaza suma primelor n numere naturale nenule
/// S = 1 + 2 + ... + n
/// O(1)
///
void P2()
{
int n;
bool flowControl = ExtractNumber(out n);
if (!flowControl)
{
return;
}
long suma = (long)n * (n + 1) / 2;
Console.WriteLine($"Suma numerelor de la 1 la {n} este egala cu {suma}");
}
///
/// Functia calculeaza suma primelor n numere naturale nenule
/// S = 1 + 2 + ... + n
/// O(n) - algoritm liniar
///
void P1()
{
int n;
bool flowControl = ExtractNumber(out n);
if (!flowControl)
{
return;
}
long suma = 0;
for (int i = 1; i <= n; i++)
checked
{
suma = suma + i;
}
Console.WriteLine($"Suma numerelor de la 1 la {n} este egala cu {suma}");
}
///
/// *
/// **
/// ***
/// ****
///
///
static void D1(int n)
{
for (int i = 1; i <= n; i++)
{
//string line = new string('*', i);
//Console.WriteLine(line);
// SAU
for (int j = 1; j <= i; j++)
Console.Write('*');
Console.WriteLine();
}
}