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)< +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; +} + +