TCS Coding Question 3

Oddly Even Problem Statement

Given a maximum of 100 digit numbers as input, find the difference between the sum of odd and even position digits

Test Cases

Case 1

  • Input: 4567
  • Expected Output: 2

Explanation : Odd positions are 4 and 6 as they are pos: 1 and pos: 3, both have sum 10. Similarly, 5 and 7 are at even positions pos: 2 and pos: 4 with sum 12. Thus, difference is 12 – 10 = 2

Case 2

  • Input: 5476
  • Expected Output: 2

Case 3

  • Input: 9834698765123
  • Expected Output: 1
Given a maximum of 100 digit numbers as inpu

Solution

(When using Strings as input)

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

int main()
{
    int a = 0,b = 0,i = 0, n;
    char num[100];
   
    printf("Enter the number:");
    scanf("%s",num);    //get the input up to 100 digit
    n = strlen(num);
    while(n>0)
    {
        if(i==0)         //add even digits when no of digit is even and vise versa
        {
            a+=num[n-1]-48;
            n--;
            i=1;
        }
        else            //add odd digits when no of digit is even and vice versa
        {
            b+=num[n-1]-48;
            n--;
            i=0;
        }
    }
    printf("%d",abs(a-b)); //print the difference of odd and even

    return 0;
}

Solution

(When using long long as input)

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

int main()
{
    int odd = 0,even = 0,i = 0, n,diff;
    long long num;
    scanf("%lld",&num);    //get the input up to 100 digit
    
    while(num != 0){
        if(i%2==0){
            even = even + num%10;
            num = num/10;
            i++;
        }
        else{
            odd = odd + num%10;
            num = num/10;
            i++;
        }
        
    }
    
    printf("%d",abs(odd - even));
    
    return 0;
}