Sunday, November 17, 2024
Google search engine
HomeData Modelling & AICheck if a number is formed by Concatenation of 1, 14 or...

Check if a number is formed by Concatenation of 1, 14 or 144 only

Given a number N       . The task is to check if the number is formed by concatenating the numbers 1, 14 and 144 only any number of times and in any order.
If it is possible, print YES otherwise print NO.
Example: 
 

Input: N = 141411
Output: YES 

Input: N = 14134
Output: NO

 

The idea is to fetch single digit, double digit and triple digit numbers from the end and check if any of them matches with 1, 14 and 144 respectively. If any of them matches, divide the number with that and repeat the above step until the number is greater than zero.
Below is the implementation of using above approach: 
 

C++




// C++ program to check if a number is formed
// by Concatenation of 1, 14 or 144 only
 
#include <iostream>
using namespace std;
 
// Function to check if a number is formed
// by Concatenation of 1, 14 or 144 only
string checkNumber(int N)
{
    int temp = N;
 
    while (temp > 0) {
        // check for each possible digit
        // if given number consist other than
        // 1, 14, 144 print NO else print YES
        if (temp % 1000 == 144)
            temp /= 1000;
        else if (temp % 100 == 14)
            temp /= 100;
        else if (temp % 10 == 1)
            temp /= 10;
        else {
            return "NO";
        }
    }
 
    return "YES";
}
 
// Driver Code
int main()
{
    int N = 1414;
 
    cout << checkNumber(N);
 
    return 0;
}


Java




// Java program to check if a number is formed
// by Concatenation of 1, 14 or 144 only
 
import java.io.*;
 
class GFG {
     
 
// Function to check if a number is formed
// by Concatenation of 1, 14 or 144 only
static String checkNumber(int N)
{
    int temp = N;
 
    while (temp > 0) {
        // check for each possible digit
        // if given number consist other than
        // 1, 14, 144 print NO else print YES
        if (temp % 1000 == 144)
            temp /= 1000;
        else if (temp % 100 == 14)
            temp /= 100;
        else if (temp % 10 == 1)
            temp /= 10;
        else {
            return "NO";
        }
    }
 
    return "YES";
}
 
// Driver Code
 
 
    public static void main (String[] args) {
        int N = 1414;
 
    System.out.println(checkNumber(N));
    }
}
// This code is contributed by anuj_67..


Python 3




# Python 3 program to check if a
# number is formed by Concatenation
# of 1, 14 or 144 only
 
# Function to check if a number is formed
# by Concatenation of 1, 14 or 144 only
def checkNumber(N):
    temp = N
 
    while (temp > 0):
         
        # check for each possible digit
        # if given number consist other than
        # 1, 14, 144 print NO else print YES
        if (temp % 1000 == 144):
            temp /= 1000
        elif (temp % 100 == 14):
            temp /= 100
        elif (temp % 10 == 1):
            temp /= 10
        else:
            return "YES"
 
    return "NO"
 
# Driver Code
N = 1414;
 
print(checkNumber(N));
 
# This code is contributed
# by Akanksha Rai


C#




// C# program to check if a number is formed
// by Concatenation of 1, 14 or 144 only
 
using System;
 
class GFG {
     
 
// Function to check if a number is formed
// by Concatenation of 1, 14 or 144 only
static String checkNumber(int N)
{
    int temp = N;
 
    while (temp > 0) {
        // check for each possible digit
        // if given number consist other than
        // 1, 14, 144 print NO else print YES
        if (temp % 1000 == 144)
            temp /= 1000;
        else if (temp % 100 == 14)
            temp /= 100;
        else if (temp % 10 == 1)
            temp /= 10;
        else {
            return "NO";
        }
    }
 
    return "YES";
}
 
// Driver Code
 
 
    public static void Main () {
        int N = 1414;
 
    Console.WriteLine(checkNumber(N));
    }
}
// This code is contributed by anuj_67..


PHP




<?php
// PHP program to check if a number
// is formed by Concatenation of
// 1, 14 or 144 only
 
// Function to check if a number is formed
// by Concatenation of 1, 14 or 144 only
function checkNumber($N)
{
    $temp = $N;
 
    while ($temp > 0)
    {
        // check for each possible digit
        // if given number consist other than
        // 1, 14, 144 print NO else print YES
        if ($temp % 1000 == 144)
            $temp /= 1000;
        else if ($temp % 100 == 14)
            $temp /= 100;
        else if ($temp % 10 == 1)
            $temp /= 10;
        else
        {
            return "YES";
        }
    }
 
    return "NO";
}
 
// Driver Code
$N = 1414;
echo checkNumber($N);
 
// This code is contributed by Tushil
?>


Javascript




<script>
    // Javascript program to check if a number is formed
    // by Concatenation of 1, 14 or 144 only
     
    // Function to check if a number is formed
    // by Concatenation of 1, 14 or 144 only
    function checkNumber(N)
    {
        let temp = N;
 
        while (temp > 0) {
            // check for each possible digit
            // if given number consist other than
            // 1, 14, 144 print NO else print YES
            if (temp % 1000 == 144)
                temp = parseInt(temp / 1000, 10);
            else if (temp % 100 == 14)
                temp = parseInt(temp / 100, 10);
            else if (temp % 10 == 1)
                temp = parseInt(temp / 10, 10);
            else {
                return "NO";
            }
        }
 
        return "YES";
    }
     
    let N = 1414;
   
    document.write(checkNumber(N));
         
</script>


Output: 

YES

 

Time Complexity: O(logn)

Auxiliary Space: O(1), since no extra space has been taken.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments