Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions bit wise calculation of a power b.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include<stdio.h>
int main()
{
int a,b,mod,result=1;
scanf("%d %d %d",&a,&b,&mod);
int bit=8*sizeof(b);

for(int i=0;i<bit;i++)
{
printf("%d\n",b);
if(1&b)
{
result=(a*result)%mod;
}
a=(a*a)%mod;
b>>=1;

printf("%d:no. of iletrations\n",i);
printf("result:%d\n",result);
}
printf("%d\n",result);
return 0;
}

68 changes: 68 additions & 0 deletions large factorial.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// C++ program to compute factorial of big numbers
#include<iostream>
using namespace std;

// Maximum number of digits in output
#define MAX 500

int multiply(int x, int res[], int res_size);

// This function finds factorial of large numbers
// and prints them
void factorial(int n)
{
int res[MAX];

// Initialize result
res[0] = 1;
int res_size = 1;

// Apply simple factorial formula n! = 1 * 2 * 3 * 4...*n
for (int x=2; x<=n; x++)
res_size = multiply(x, res, res_size);

cout << "Factorial of given number is \n";
for (int i=res_size-1; i>=0; i--)
cout << res[i];
}

// This function multiplies x with the number
// represented by res[].
// res_size is size of res[] or number of digits in the
// number represented by res[]. This function uses simple
// school mathematics for multiplication.
// This function may value of res_size and returns the
// new value of res_size
int multiply(int x, int res[], int res_size)
{
int carry = 0; // Initialize carry

// One by one multiply n with individual digits of res[]
for (int i=0; i<res_size; i++)
{
int prod = res[i] * x + carry;

// Store last digit of 'prod' in res[]
res[i] = prod % 10;

// Put rest in carry
carry = prod/10;
}

// Put carry in res and increase result size
while (carry)
{
res[res_size] = carry%10;
carry = carry/10;
res_size++;
}
return res_size;
}

// Driver program
int main()
{
factorial(100);
return 0;
}