• 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

Maximum difference between two elements s.t larger element appears after the smaller number

Microsoft BING Interview Experience

Cisco Hiring Event 21st – 22nd Feb 2015

Count Possible Decodings of a given Digit Sequence

Subset Sum Problem Dynamic programming

Stock Buy Sell to Maximize Profit

CodeChef’ RRCOPY

Print vertical sum of all the axis in the given binary tree

System Design: Designing a LLD for Hotel Booking

Walmart Labs Interview Experience

Practo Hiring Experience

Convert Decimal to Roman numbers / Romanizer HackerEarth Code

Naurki.com Security Breach

Check Binary Tree is Binary Search Tree or not

Flipkart Set 1 On Campus with Answers

Doubly linked list

Find Nearest Minimum number in left side in O(n)

Find Percentage of Words matching in Two Strings

Maximum of all subarrays of size k

Coin Collection Dynamic Programming

Printing Longest Common Subsequence

Minimum insertions to form a palindrome

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

N Petrol bunks or City arranged in circle. You have Fuel and distance between petrol bunks. Is it possible to find starting point so that we can travel all Petrol Bunks

Find the element that appears once others appears thrice

25 horses 5 tracks Find 3 fastest puzzle

Find and print longest consecutive number sequence in a given sequence in O(n)

K’th Largest Element in BST when modification to BST is not allowed

Printing intermediate Integers between one element & next element of array

Urban Ladder Written Test.

Copyright © 2026 · Genesis Framework · WordPress · Log in