tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
46
Task/Catalan-numbers/C/catalan-numbers-1.c
Normal file
46
Task/Catalan-numbers/C/catalan-numbers-1.c
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#include <stdio.h>
|
||||
|
||||
typedef unsigned long long ull;
|
||||
|
||||
ull binomial(ull m, ull n)
|
||||
{
|
||||
ull r = 1, d = m - n;
|
||||
if (d > n) { n = d; d = m - n; }
|
||||
|
||||
while (m > n) {
|
||||
r *= m--;
|
||||
while (d > 1 && ! (r%d) ) r /= d--;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
ull catalan1(int n) {
|
||||
return binomial(2 * n, n) / (1 + n);
|
||||
}
|
||||
|
||||
ull catalan2(int n) {
|
||||
int i;
|
||||
ull r = !n;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
r += catalan2(i) * catalan2(n - 1 - i);
|
||||
return r;
|
||||
}
|
||||
|
||||
ull catalan3(int n)
|
||||
{
|
||||
return n ? 2 * (2 * n - 1) * catalan3(n - 1) / (1 + n) : 1;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i;
|
||||
puts("\tdirect\tsumming\tfrac");
|
||||
for (i = 0; i < 16; i++) {
|
||||
printf("%d\t%llu\t%llu\t%llu\n", i,
|
||||
catalan1(i), catalan2(i), catalan3(i));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
114
Task/Catalan-numbers/C/catalan-numbers-2.c
Normal file
114
Task/Catalan-numbers/C/catalan-numbers-2.c
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
namespace CatalanNumbers
|
||||
{
|
||||
/// <summary>
|
||||
/// Class that holds all options.
|
||||
/// </summary>
|
||||
public class CatalanNumberGenerator
|
||||
{
|
||||
private static double Factorial(double n)
|
||||
{
|
||||
if (n == 0)
|
||||
return 1;
|
||||
|
||||
return n * Factorial(n - 1);
|
||||
}
|
||||
|
||||
public double FirstOption(double n)
|
||||
{
|
||||
const double topMultiplier = 2;
|
||||
return Factorial(topMultiplier * n) / (Factorial(n + 1) * Factorial(n));
|
||||
}
|
||||
|
||||
public double SecondOption(double n)
|
||||
{
|
||||
if (n == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
double sum = 0;
|
||||
double i = 0;
|
||||
for (; i <= (n - 1); i++)
|
||||
{
|
||||
sum += SecondOption(i) * SecondOption((n - 1) - i);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
public double ThirdOption(double n)
|
||||
{
|
||||
if (n == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return ((2 * (2 * n - 1)) / (n + 1)) * ThirdOption(n - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Program.cs
|
||||
using System;
|
||||
using System.Configuration;
|
||||
|
||||
// Main program
|
||||
// Be sure to add the following to the App.config file and add a reference to System.Configuration:
|
||||
// <?xml version="1.0" encoding="utf-8" ?>
|
||||
// <configuration>
|
||||
// <appSettings>
|
||||
// <clear/>
|
||||
// <add key="MaxCatalanNumber" value="50"/>
|
||||
// </appSettings>
|
||||
// </configuration>
|
||||
namespace CatalanNumbers
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
CatalanNumberGenerator generator = new CatalanNumberGenerator();
|
||||
int i = 0;
|
||||
DateTime initial;
|
||||
DateTime final;
|
||||
TimeSpan ts;
|
||||
|
||||
try
|
||||
{
|
||||
initial = DateTime.Now;
|
||||
for (; i <= Convert.ToInt32(ConfigurationManager.AppSettings["MaxCatalanNumber"]); i++)
|
||||
{
|
||||
Console.WriteLine("CatalanNumber({0}):{1}", i, generator.FirstOption(i));
|
||||
}
|
||||
final = DateTime.Now;
|
||||
ts = final - initial;
|
||||
Console.WriteLine("It took {0}.{1} to execute\n", ts.Seconds, ts.Milliseconds);
|
||||
|
||||
i = 0;
|
||||
initial = DateTime.Now;
|
||||
for (; i <= Convert.ToInt32(ConfigurationManager.AppSettings["MaxCatalanNumber"]); i++)
|
||||
{
|
||||
Console.WriteLine("CatalanNumber({0}):{1}", i, generator.SecondOption(i));
|
||||
}
|
||||
final = DateTime.Now;
|
||||
ts = final - initial;
|
||||
Console.WriteLine("It took {0}.{1} to execute\n", ts.Seconds, ts.Milliseconds);
|
||||
|
||||
i = 0;
|
||||
initial = DateTime.Now;
|
||||
for (; i <= Convert.ToInt32(ConfigurationManager.AppSettings["MaxCatalanNumber"]); i++)
|
||||
{
|
||||
Console.WriteLine("CatalanNumber({0}):{1}", i, generator.ThirdOption(i));
|
||||
}
|
||||
final = DateTime.Now;
|
||||
ts = final - initial;
|
||||
Console.WriteLine("It took {0}.{1} to execute", ts.Seconds, ts.Milliseconds, ts.TotalMilliseconds);
|
||||
Console.ReadLine();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Stopped at index {0}:", i);
|
||||
Console.WriteLine(ex.Message);
|
||||
Console.ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue