A set of numbers which are in sequence are arranged in descending order as a string S. But one of the number in the sequence is missing in between in the string S. This string S is passed as input to the program. The program must identify the missing number M and print it as output.
Input Format:
The first line will contain the set of numbers in the sequence.
Boundary Conditions:
1 <= M <= 99999
Length of string S is from 5 to 200.
Output Format:
The first line will contain the missing number M.
Example Input/Output 1:
Input:
98764321
Output:
5
Explanation:
The numbers a sequence in descending order are 9 8 7 6 5 4 3 2 1. As 5 is missing, it is printed as the output.
Example Input/Output 2:
Input:
601600598597596
Output:
599
Explanation:
The numbers a sequence in descending order are 601 600 599 598 597 596. As 599 is missing, it is printed as the output.
#include <stdio.h>
long int n(char *a){
long int b=0;
for(int i=0;i<strlen(a);i++){
if(isdigit(a[i])&&a[i])
b=b*10+a[i]-'0';
}
return b;
}
void stcpy(char *a,char *b,int i){
int n=0,l=strlen(b);
for(n=0;n<l&&n<i;n++){
a[n]=b[n];
}
a[n]=' ';
}
int main(){
char a[1000],b[3][10];
scanf("%s",a);
int i,k,k1,l=strlen(a),f=0;
i=5;
while(i>0){
stcpy(b[0],a,i);
stcpy(b[1],a+i,i);
stcpy(b[2],a+i,i-1);
int k[3]={n(b[0]),n(b[1]),n(b[2])};
if(k[0]-k[1]==1||k[0]-k[1]==2||k[0]-k[2]==1||k[0]-k[2]==2){
f=k[0];
break;
}
i--;
}
for(int i=0;i<l;i++){
sprintf(b[0],"%d",f);
if(strncmp(a+i,b[0],strlen(b[0]))==0)
i+=strlen(b)-1;
else{
printf("%d",f);
break;
}
f--;
}
}
This code is designed to find the missing number in a sequence of numbers that are arranged in descending order as a string. The input is a string of numbers, and the program needs to identify the missing number and print it as output. Let’s break down the code and create a simple algorithm to explain it:
Algorithm:
- Read the input string
a. - Define a function
nto convert a substring to a long integer.- Initialize
bto 0. - Loop through the characters of the string.
- If the character is a digit, convert it to an integer and add it to
b. - Return
bas the converted integer.
- Initialize
- Define a function
stcpyto copy the firsticharacters from stringbto stringa.- Initialize
nto 0. - Loop until
nreachesior the end ofb. - Copy each character from
btoa. - Null-terminate
aafter copying.
- Initialize
- In the
mainfunction:- Define an array
bto hold substrings of the input. - Read the input string
afrom the user. - Initialize variables
i,k,k1,l, andffor loop control and storage. - Set
ito 5, as we start looking for a missing number in a 5-digit sequence.
- Define an array
- Run a loop while
iis greater than 0:- Use the
stcpyfunction to split the input string into three substringsb[0],b[1], andb[2]. - Convert these substrings to integers and store them in an array
k. - Check if the difference between
k[0]andk[1]is 1 or 2, or if the difference betweenk[0]andk[2]is 1 or 2. - If any of these conditions are met, set
ftok[0]and break out of the loop. - If not, decrease
iby 1 and continue the loop to check smaller sequences.
- Use the
- Run a loop to compare the substrings of the input with the value of
f.- Convert
fto a string and store it inb[0]. - Check if the substring of
astarting from the current position matchesb[0]. - If it does, skip the length of
b[0]characters in the input string. - If not, print
fas the missing number and break out of the loop. - Decrease
fby 1 to check for the next missing number.
- Convert