Jan 25, 2022

Euler Problem 8 (C Language)

 Largest Product in Series _More efficient than First one

/*
Problem statement--
The four adjacent digits in the 1000-digit number
that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number
that have the greatest product. What is the value of this product?
*/
#include <stdio.h>
#include <inttypes.h>
#include <string.h>

int main()
{
    // Just put the value of numbers to multiply in 'count' variable
    int count = 4;

    char array[] = "731671765313306249192251196744265747423553491949
    3496983520312774506326239578318016984801869478851843858615607891
    1294949545950173795833195285320880551112540698747158523863050715
    6932909632952274430435576689664895044524452316173185640309871112
    1722383113622298934233803081353362766142828064444866452387493035
    8907296290491560440772390713810515859307960866701724271218839987
    9790879227492190169972088809377665727333001053367881220235421809
    7512545405947522435258490771167055601360483958644670632441572215
    5397536978179778461740649551492908625693219784686224828397224137
    5657056057490261407972968652414535100474821663704844031998900088
    9524345065854122758866688116427171479924442928230863465674813919
    1231628245861786645835912456652947654568284891288314260769004224
    2190226710556263211111093705442175069416589604080719840385096245
    5444362981230987879927244284909188845801561660979191338754992005
    2406368991256071760605886116467109405077541002256983155200055935
    72972571636269561882670428252483600823257530420752963450";
    int last = (sizeof(array) / sizeof(char));

    uint64_t max_product = 1;
    uint64_t product = 1;

    // first ""count"" digits product
    for (int i = 0; i < count; i++)
    {
        max_product = max_product * (array[i] - '0');
    }

    for (int x = count; x < (last); x++)
    {
        if ((array[x - count] - '0') != 0) // check if division is performed by zero
        {
            product = ((product / (array[x - count] - '0')) * (array[x] - '0'));
        }
        else // to avoid division by zero error
        {
            product = array[(x - count) + 1] - '0';
            for (int j = ((x - count) + 2); j < (x + 1); j++)
            {
                product = product * (array[j] - '0');
            }
        }
        // if product is larger then store product in maximum_product.
        if (product > max_product)
        {
            max_product = product;
            printf("\nMax prod : %" PRIu64 "\n", max_product);
        }
    }
    printf("\nMax prod : %" PRIu64 "\n", max_product);

    return 0;
}

Euler Problem (8) Using C Language

 Largest Product In Series of Numbers.

/*
Problem statement--
The four adjacent digits in the 1000-digit number
that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number
that have the greatest product. What is the value of this product?
*/
#include <stdio.h>
#include <inttypes.h>
#include <string.h>


int main()
{
    // Just put the value of numbers to multiply in 'count' variable
    int count =13;

    char num_arr[] ="73167176531330624919225119674426574742355349194934969835203127745
    06326239578318016984801869478851843858615607891129494954595017379583319528532088055
    11125406987471585238630507156932909632952274430435576689664895044524452316173185640
    30987111217223831136222989342338030813533627661428280644448664523874930358907296290
    49156044077239071381051585930796086670172427121883998797908792274921901699720888093
    77665727333001053367881220235421809751254540594752243525849077116705560136048395864
    46706324415722155397536978179778461740649551492908625693219784686224828397224137565
    70560574902614079729686524145351004748216637048440319989000889524345065854122758866
    68811642717147992444292823086346567481391912316282458617866458359124566529476545682
    84891288314260769004224219022671055626321111109370544217506941658960408071984038509
    62455444362981230987879927244284909188845801561660979191338754992005240636899125607
    17606058861164671094050775410022569831552000559357297257163626956188267042825248360
    0823257530420752963450";
    int last = (sizeof(num_arr) / sizeof(char));
    int array[1001];

    // converting string into number array
    for (int first = 0; first <= (last); first++)
    {
        // Subtracting '0' to convert
        // each character into digit
        // str[a] - '0'
        // = ASCII(str[a]) - ASCII('0')
        // = ASCII(str[a] - 48
        array[first] = num_arr[first] - '0';
    }

    // // printing the integer array
    // for (int first = 0; first < last; first++)
    // {
    //     printf("%d ", array[first]);
    // }

    // checking the maximum product
    uint64_t max_product = 1;
    uint64_t product = 1;
    // first ""count"" digits product
    for (int i = 0; i < count; i++)
    {
        max_product = max_product * array[i];
    }
    // printf("\nThe Product-first : %lld", max_product);
    // product = max_product;

    for (int x = count; x < (last); x++)
    {
        if (array[x - count] != 0) // check if division is performed by zero
        {
            product = ((product / (array[x - count])) * (array[x]));
        }
        else // to avoid division by zero error
        {
            product = array[(x - count) + 1];
            for (int j = ((x - count) + 2); j < (x + 1); j++)
            {
                product = product * array[j];
            }
        }
        // if product is larger then store product in maximum_product.
        if (product > max_product)
        {
            max_product = product;
        printf("\nMax prod : %" PRIu64 "\n", max_product);
        }
    }
    printf("\nMax prod : %" PRIu64 "\n", max_product);

    return 0;
}

Calculating Maximum out of four numbers (C Language)

 Using if condition  and Relational and Logical Operators.

#include<stdio.h>

int max_of_four(int a, int b, int c, int d)
{
    if(a>b && a>c && a>d){
        return a;
    }
    if(b>a && b>c && b>d){
        return b;
    }
    if(c>b && a<c && c>d){
        return c;
    }
    return d;
}
int main()
{
    int a, b, c, d;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    int ans = max_of_four(a, b, c, d);
    printf("%d", ans);

    return 0;
}

'For' and 'while' Loops (C Language)

Use of for loop and while loop 

 #include<stdio.h>
int main()
{
    //using for loop
    printf("Using for loop :\n");
    for (int  i = -1; i > -15; i--)
    {
        printf("%d\n", i);
    }

    //using while loop
    printf("Using while loop :\n");
    int i = -1;
    while (i>=-14)
    {
        printf("%d\n", i);
        i--;
    }
   
   
    return 0;
}

operations on 'For' loop (C Language)

Use of if-else statements with for loop in C.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main()
{
    int a, b;
    scanf("%d\n%d", &a, &b);
    // Complete the code.
    for (int n = a; n <= b; n++)
    {

        if (n == 1)
        {
            printf("one\n");
        }
        else if (n == 2)
        {
            printf("two\n");
        }
        else if (n == 3)
        {
            printf("three\n");
        }
        else if (n == 4)
        {
            printf("four\n");
        }
        else if (n == 5)
        {
            printf("five\n");
        }
        else if (n == 6)
        {
            printf("six\n");
        }
        else if (n == 7)
        {
            printf("seven\n");
        }
        else if (n == 8)
        {
            printf("eight\n");
        }
        else if (n == 9)
        {
            printf("nine\n");
        }
        else if (n % 2 == 0)
        {
            printf("even\n");
        }
        else
        {
            printf("odd\n");
        }
    }

    return 0;
}

Printing Fibonacci series (C Language)

Simple printing series using while() loop.

 //Fibonacci series in C
#include<stdio.h>

//1  2  3  5  8  13 ...
//a  b  
//   a  b
int main()
{
    int a, b, c;
    a = 1;
    b = 2;
    while (a < 90)
    {
        printf("%d\n", a);
        c = b;
        b = a + b;
        a = c;
    }

    return 0;
}

Hacker Rank -Calculate Nth Term (C Language)

Fibonacci _ updated -Sum of 3 previous numbers to be calculate.

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>


int find_nth_term(int n, int a, int b, int c) {
    int term_a;
    int term_b;

    for (int i = 0; i < n-1; i++)
    {
        //1  2  3  6  11
        //a  b  c  
        //   a  b  c
        //      a  b  c
        term_a = b;
        term_b = c;
        c = a + b + c;
        b = term_b;
        a = term_a ;
        printf("%d  ", a);
       
    }
    return a;
}

int main() {
    int n, a, b, c;
 
    scanf("%d %d %d %d", &n, &a, &b, &c);
    int ans = find_nth_term(n, a, b, c);
 
    printf("%d", ans);
    return 0;
}

Printing Even numbers in some range (C Language).

Operations using for loop and conditional statements.

 #include <stdio.h>

int main()
{
    // using for loop
    printf("Even numbers between 2 to 30 using for loop :\n");
    for (int i = 2; i <= 30; i++)
    {
        if (i % 2 == 0)
        {
            printf("%d\n", i);
        }
    }

    return 0;
}

Project Euler -2 (C Language)

Even Fibonacci Sum Problem code Solution

 /* Each new term in the Fibonacci sequence is generated
by adding the previous two terms.
By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose
 values do not exceed four million,
find the sum of the even-valued terms.

*/
#include <stdio.h>
int main()
{
    int fibbo = 0;
    int a, b, c;
    a = 1;
    b = 2;
    while (a <= 4000000)
    {
        if (a % 2 == 0)
        {
            fibbo += a;
        }
        printf("%d\n", a);
        c = b;
        b = a + b;
        a = c;
    }

    printf("SUM : %d\n", fibbo);

    return 0;
}

Comparing two files in C language.

Operations on More than one File.    # include < stdio.h > # include < stdlib.h > # include < string.h > int main ( int ...