Fascinating Number

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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] > 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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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)
                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");
        }
    }
}

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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] > 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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] > 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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)
            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
?>

chevron_right


Output:

Yes


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.