From f3ab48525e18adac12ee27291cf6fadad8d85a34 Mon Sep 17 00:00:00 2001 From: vaishnavi jha Date: Sat, 3 Oct 2020 22:07:12 +0530 Subject: [PATCH 1/2] Create birthdayPradox.cpp --- birthdayPradox.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 birthdayPradox.cpp diff --git a/birthdayPradox.cpp b/birthdayPradox.cpp new file mode 100644 index 0000000..7fd558a --- /dev/null +++ b/birthdayPradox.cpp @@ -0,0 +1,17 @@ +// C++ program to approximate number of people in Birthday Paradox +// problem +//Using the above approximate formula sqrt(2*365*log(1/(1-p)) , we can approximate number of people for a given probability. +//The questiopn is to find the number of person we should have so that the probability that any 2 of them have their birthday on the same date is n. + +#include +#include +using namespace std; +int find(double p) +{ + return ceil(sqrt(2*365*log(1/(1-p)))); +} +int main() +{ +int n;//probability for which we have to find +cout << find(n)< Date: Mon, 5 Oct 2020 00:14:34 +0530 Subject: [PATCH 2/2] Create max_inversions.cpp --- max_inversions.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 max_inversions.cpp diff --git a/max_inversions.cpp b/max_inversions.cpp new file mode 100644 index 0000000..92da2a5 --- /dev/null +++ b/max_inversions.cpp @@ -0,0 +1,64 @@ +// C++ program to Count +// Inversions in an array +// using Merge Sort +#include +using namespace std; + +int _mergeSort(int arr[], int temp[], int left, int right); +int merge(int arr[], int temp[], int left, int mid, int right); +int mergeSort(int arr[], int array_size) +{ + int temp[array_size]; + return _mergeSort(arr, temp, 0, array_size - 1); +} +int _mergeSort(int arr[], int temp[], int left, int right) +{ + int mid, inv_count = 0; + if (right > left) { + mid = (right + left) / 2; + inv_count += _mergeSort(arr, temp, left, mid); + inv_count += _mergeSort(arr, temp, mid + 1, right); + inv_count += merge(arr, temp, left, mid + 1, right); + } + return inv_count; +} + +int merge(int arr[], int temp[], int left, + int mid, int right) +{ + int i, j, k; + int inv_count = 0; + + i = left; /* i is index for left subarray*/ + j = mid; /* j is index for right subarray*/ + k = left; /* k is index for resultant merged subarray*/ + while ((i <= mid - 1) && (j <= right)) { + if (arr[i] <= arr[j]) { + temp[k++] = arr[i++]; + } + else { + temp[k++] = arr[j++]; + inv_count = inv_count + (mid - i); + } + } + while (i <= mid - 1) + temp[k++] = arr[i++]; + while (j <= right) + temp[k++] = arr[j++]; + for (i = left; i <= right; i++) + arr[i] = temp[i]; + + return inv_count; +} + + +int main() +{ + int arr[] = { 1, 20, 6, 4, 5 }; + int n = sizeof(arr) / sizeof(arr[0]); + int ans = mergeSort(arr, n); + cout << " Number of inversions are " << ans; + return 0; +} + +