• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar
  • Skip to secondary sidebar

GoHired

Interview Questions asked in Google, Microsoft, Amazon

Join WeekEnd Online Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

  • Home
  • Best Java Books
  • Algorithm
  • Internship
  • Certificates
  • About Us
  • Contact Us
  • Privacy Policy
  • Array
  • Stack
  • Queue
  • LinkedList
  • DP
  • Strings
  • Tree
  • Mathametical
  • Puzzles
  • Graph

Add Sub Multiply very large number stored as string

August 10, 2014 by Dhaval Dave

Very large number like 2994320121 and 125346232 is given in character string.
You need to add, subtract and multiply two numbers and store number in character array only.

Logic
1) First way to create a “long long”number from String and add/multiply/subtract.
And convert this result in to character array.2) keep numbers in Character array only and try to add/sub/multiply index wise.
See code for Add+Multiply
You can create for Subtract.

Thanks to Dhaval for suggesting this approach and Article

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10000

char * addition(char a[],char b[]){

    static char add[MAX];
    char c[MAX];
    int temp;
    int la,lb;
    int i,j,k=0,x=0,y;
    long int car=0;
    long sum = 0;
    la=strlen(a)-1;
    lb=strlen(b)-1;
    //printf(“n la=%d lb=%d “,la,lb);
    for(i=0;i<=la;i++){ a[i] = a[i] – 48; }
    for(i=0;i<=lb;i++){ b[i] = b[i] – 48; }

   if(la>lb){
       y=0;
       k=la;

   }
   else{
       k=lb;
       y=1;
   }
    //printf(“nAddition called “);
    for(i=la,j=lb;i>=0,j>=0;i–,j–){
        //printf(“Addition called “);
        c[k–]=(car+a[i]+b[j])%10;
        car=(car+a[i]+b[j])/10;
    }//for
    printf(“nWithout carry %s”,c);

    if(y=0){
        j=0;
        for(i=0;i<la+1;i++){
        add[j++]=c[i] + 48;
        }
        add[j]=”;
    }
    else{
        j=0;
        for(i=0;i<lb+1;i++){
        add[j++]=c[i] + 48;
        }
        add[j]=”;
    }
    return add;

}

char * multiply(char a[],char b[]){
    static char mul[MAX];
    char c[MAX];
    char temp[MAX];
    int la,lb;
    int i,j,k=0,x=0,y;
    long int r=0;
    long sum = 0;
    la=strlen(a)-1;
    lb=strlen(b)-1;

        for(i=0;i<=la;i++){
                a[i] = a[i] – 48;
        }

        for(i=0;i<=lb;i++){
                b[i] = b[i] – 48;
        }

    for(i=lb;i>=0;i–){
         r=0;
         for(j=la;j>=0;j–){
             temp[k++] = (b[i]*a[j] + r)%10;
             r = (b[i]*a[j]+r)/10;
         }
         temp[k++] = r;
         x++;
         for(y = 0;y<x;y++){
             temp[k++] = 0;
         }
    }

    k=0;
    r=0;
    for(i=0;i<la+lb+2;i++){
         sum =0;
         y=0;
         for(j=1;j<=lb+1;j++){
             if(i <= la+j){
                 sum = sum + temp[y+i];
             }
             y += j + la + 1;
         }
         c[k++] = (sum+r) %10;
         r = (sum+r)/10;
    }
    c[k] = r;
    j=0;
    for(i=k-1;i>=0;i–){
         mul[j++]=c[i] + 48;
    }
    mul[j]=”;
    return mul;
}

int main(){
    char a[MAX]={‘9′,’5′,’5′,’5′,’5’ };
    char b[MAX]={‘3′,’3′,’3′,’3′,’3′,’3′,’3′,’3′,’3′,’3’};
    char *c;
    int la,lb;
    //int i = 0;
    int i = 1;
    //int i = 2;

    printf(“Answer of two numbers : “);
    switch(i){
        case 0:  c = multiply(a,b); break;
        case 1:  c = addition(a,b); break;
        //case 2:  c = sub(a,b); break;
        default: break;
    }
    //c = multiply(a,b);
    printf(“%s”,c);
    return 0;
}

You can view code at http://ideone.com/Kd2Rv1

Similar Articles

Filed Under: Amazon Interview Question, Interview Questions, Microsoft Interview Questions Tagged With: Mathematical, string

Reader Interactions

Primary Sidebar

Join WeekEnd Online/Offline Batch from 4-April-2020 on How to Crack Coding Interview in Just 10 Weeks : Fees just 20,000 INR

Join WeekEnd Online/Offline Batch from 4-April-2020

WhatsApp us

Secondary Sidebar

Custom Search

  • How I cracked AMAZON
  • LeetCode
  • Adobe
  • Amazon
  • Facebook
  • Microsoft
  • Hacker Earth
  • CSE Interview

Top Rated Questions

Minimum insertions to form a palindrome

write a c program that given a set a of n numbers and another number x determines whether or not there exist two elements in s whose sum is exactly x

Cisco Hiring Event 21st – 22nd Feb 2015

Max Sum in circularly situated Values

Best Java Book | Top Java Programming Book for Beginners

Reliance Jio Software Developer Interview Experience

Implement a generic binary search algorithm for Integer Double String etc

Find an index i such that Arr [i] = i in array of n distinct integers sorted in ascending order.

Find loop in Singly linked list

C++ OOPs Part2

Regular Expression Matching

Find next greater number with same set of digits

strtok()

SAP Off Campus Hiring_ March 2015 Computer Skills

Length of the longest substring without repeating characters

Interfaces in C++ (Abstract Classes in C++)

Maximum size of square sub matrix with all 1’s in a binary matrix

Sequence Finder Dynamic Programming

Maximum of all subarrays of size k

Generate largest number arranging a no. of given non negative integer numbers

Spanning Tree

Microsoft BING Interview Experience

Reversal of LinkedList

‘N’ Story Building, with 1,2,3 steps how many ways can a person reach top of building.

Find Percentage of Words matching in Two Strings

Count number of ways to reach a given score in a game

LeetCode: Binary Tree Maximum Path Sum

Trapping Rain Water

Client Server C program

Python String and numbers

Copyright © 2026 · Genesis Framework · WordPress · Log in