Open In App

Fascinating Number

Improve
Improve
Like Article
Like
Save
Share
Report

Given a number N, the task is to check whether it is fascinating or not. 
Fascinating Number: When a number( 3 digits or more ) is multiplied by 2 and 3, and when both these products are concatenated with the original number, then it results in all digits from 1 to 9 present exactly once. There could be any number of zeros and are ignored. 
Examples: 
 

Input: 192 
Output: Yes 
After multiplication with 2 and 3, and concatenating with original number, resultant number is 192384576 which contains all digits from 1 to 9.
Input: 853 
Output: No 
After multiplication with 2 and 3, and concatenating with original number, the resultant number is 85317062559. In this, number 4 is missing and the number 5 has appeared multiple times. 
 

 

Approach
 

  1. Check if the given number has three digits or more. If not, print No.
  2. Else, Multiply the given number with 2 and 3.
  3. Concatenate these products with the given number to form a string.
  4. Traverse this string, keep the frequency count of the digits.
  5. Print No if any digit is missing or has appeared multiple times.
  6. Else, print Yes.

Below is the implementation of above approach: 
 

C++14




// C++ program to implement
// fascinating number
#include <bits/stdc++.h>
using namespace std;
 
// function to check if number
// is fascinating or not
bool isFascinating(int num)
{
    // frequency count array
    // using 1 indexing
    int freq[10] = {0};
 
    // obtaining the resultant number
    // using string concatenation
    string val = "" + to_string(num) +
                      to_string(num * 2) +
                      to_string(num * 3);
 
    // Traversing the string
    // character by character
    for (int i = 0; i < val.length(); i++)
    {
 
        // gives integer value of
        // a character digit
        int digit = val[i] - '0';
 
        // To check if any digit has
        // appeared multiple times
        if (freq[digit] and digit != 0 > 0)
            return false;
        else
            freq[digit]++;
    }
 
    // Traversing through freq array to
    // check if any digit was missing
    for (int i = 1; i < 10; i++)
    {
        if (freq[i] == 0)
            return false;
    }
    return true;
}
 
// Driver code
int main()
{
    // Input number
    int num = 192;
 
    // Not a valid number
    if (num < 100)
        cout << "No" << endl;
 
    else
    {
        // Calling the function to
        // check if input number
        // is fascinating or not
        bool ans = isFascinating(num);
        if (ans)
            cout << "Yes";
        else
            cout << "No";
    }
}
 
// This code is contributed
// by Subhadeep


Java




// Java program to implement
// fascinating number
import java.io.*;
import java.util.*;
 
public class GFG {
 
    // function to check if number
    // is fascinating or not
    public static boolean isFascinating(
                                int num)
    {
         
        // frequency count array
        //using 1 indexing
        int[] freq = new int[10];
 
        // obtaining the resultant number
        // using string concatenation
        String val = "" + num + num * 2 +
                                num * 3;
 
        // Traversing the string character //by character
        for (int i = 0; i < val.length(); i++)
        {
 
            // gives integer value of //a character digit
            int digit = val.charAt(i) - '0';
 
            // To check if any digit has
            // appeared multiple times
            if (freq[digit]>0 && digit != 0)
                return false;
            else
                freq[digit]++;
        }
 
        // Traversing through freq array to
        // check if any digit was missing
        for (int i = 1; i < freq.length; i++)
        {
            if (freq[i] == 0)
                return false;
        }
        return true;
    }
 
    // Driver code
    public static void main(String args[])
    {
         
        // Input number
        int num = 192;
 
        // Not a valid number
        if (num < 100)
            System.out.println("No");
 
        else
        {
             
            // Calling the function to check
            // if input number is fascinating or not
            boolean ans = isFascinating(num);
            if (ans)
                System.out.println("Yes");
            else
                System.out.println("No");
        }
    }
}


Python 3




# Python 3 program to implement
# fascinating number
 
# function to check if number
# is fascinating or not
def isFascinating(num) :
 
    # frequency count array
    # using 1 indexing
    freq = [0] * 10
 
    # obtaining the resultant number
    # using string concatenation
    val = (str(num) + str(num * 2) +
                      str(num * 3))
 
    # Traversing the string
    # character by character
    for i in range(len(val)) :
 
        # gives integer value of
        # a character digit
        digit = int(val[i])
 
        # To check if any digit has
        # appeared multiple times
        if freq[digit] and digit != 0 > 0 :
            return False
        else :
            freq[digit] += 1
 
    # Traversing through freq array to
    # check if any digit was missing
    for i in range(1, 10) :
 
        if freq[i] == 0 :
            return False
 
    return True
 
# Driver Code
if __name__ == "__main__" :
 
    # Input number
    num = 192
 
    # Not a valid number
    if num < 100 :
        print("No")
 
    else :
         
        # Calling the function to
        # check if input number
        # is fascinating or not
        ans = isFascinating(num)
         
        if ans :
            print("Yes")
        else :
            print("No")
 
# This code is contributed by ANKITRAI1


C#




// C# program to implement
// fascinating number
using System;
 
class GFG
{
 
// function to check if number
// is fascinating or not
public static bool isFascinating(int num)
{
    // frequency count array
    // using 1 indexing
    int[] freq = new int[10];
 
    // obtaining the resultant number
    // using string concatenation
    String val = "" + num.ToString() +
                     (num * 2).ToString() +
                     (num * 3).ToString();
 
    // Traversing the string
    // character by character
    for (int i = 0; i < val.Length; i++)
    {
 
        // gives integer value of
        // a character digit
        int digit = val[i] - '0';
 
        // To check if any digit has
        // appeared multiple times
        if (freq[digit] && digit != 0 > 0 )
            return false;
        else
            freq[digit]++;
    }
 
    // Traversing through freq array to
    // check if any digit was missing
    for (int i = 1; i < freq.Length; i++)
    {
        if (freq[i] == 0)
            return false;
    }
    return true;
}
 
// Driver code
static void Main()
{
    // Input number
    int num = 192;
 
    // Not a valid number
    if (num < 100)
        Console.WriteLine("No");
 
    else
    {
        // Calling the function to check
        // if input number is fascinating or not
        bool ans = isFascinating(num);
        if (ans)
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
}
 
// This code is contributed by mits


PHP




<?php
// PHP program to implement
// fascinating number
 
// function to check if number
// is fascinating or not
function isFascinating($num)
{
    // frequency count array
    // using 1 indexing
    $freq = array_fill(0, 10, NULL);
 
    // obtaining the resultant number
    // using string concatenation
    $val = "" . $num . ($num * 2).
                       ($num * 3);
 
    // Traversing the string
    // character by character
    for ($i = 0; $i < strlen($val); $i++)
    {
 
        // gives integer value of
        // a character digit
        $digit = $val[$i] - '0';
 
        // To check if any digit has
        // appeared multiple times
        if ($freq[$digit] > 0 && $digit != 0)
            return false;
        else
            $freq[$digit]++;
    }
 
    // Traversing through freq array to
    // check if any digit was missing
    for ($i = 1; $i < 10; $i++)
    {
        if ($freq[$i] == 0)
            return false;
    }
    return true;
}
 
// Driver code
 
// Input number
$num = 192;
 
// Not a valid number
if ($num < 100)
    echo "No" ;
 
else
{
    // Calling the function to
    // check if input number
    // is fascinating or not
    $ans = isFascinating($num);
    if ($ans)
        echo "Yes";
    else
        echo "No";
}
 
// This code is contributed
// by ChitraNayal
?>


Javascript




<script>
 
// Javascript program to implement
// fascinating number
     
    // function to check if number
    // is fascinating or not
    function isFascinating(num)
    {
        // frequency count array
        //using 1 indexing
        let freq = new Array(10);
        for(let i=0;i<freq.length;i++)
        {
            freq[i]=0;
        }
  
        // obtaining the resultant number
        // using string concatenation
        let val = "" + num + num * 2 +
                                num * 3;
  
        // Traversing the string character //by character
        for (let i = 0; i < val.length; i++)
        {
  
            // gives integer value of //a character digit
            let digit = val[i].charCodeAt(0) -
            '0'.charCodeAt(0);
  
            // To check if any digit has
            // appeared multiple times
            if (freq[digit]>0 && digit != 0)
                return false;
            else
                freq[digit]++;
        }
  
        // Traversing through freq array to
        // check if any digit was missing
        for (let i = 1; i < freq.length; i++)
        {
            if (freq[i] == 0)
                return false;
        }
        return true;
    }
     
    // Driver code
     
     
    // Input number
    let num = 192;
    // Not a valid number
    if (num < 100)
        document.write("No");
  
    else
    {
              
        // Calling the function to check
        // if input number is fascinating or not
        let ans = isFascinating(num);
        if (ans)
            document.write("Yes");
        else
            document.write("No");
    }
 
// This code is contributed by rag2127
 
</script>


Output: 

Yes

 

Time Complexity: O(|num|)

Auxiliary Space: O(10)



Last Updated : 01 Sep, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads