In this tutorial, we will write a C program to check whether the given number is a Fascinating number or not. You may go through the following topics first in C.
What is Fascinating Number?
A number is said to be a fascinating number if it is (having at least 3 digits) multiplied by 2 and 3, and then both these product’s results are concatenated with the original number, then the new number contains all the digits from 1 to 9 exactly once. There could be any number of zeros and are ignored.
Fascinating number example:
Consider a Number = 192
Then multiply it by two and 3
192 × 2 = 384
192 × 3 = 576
Concatenating the above two numbers with the original number, we get:
“192” + “384” + “576” = 192384576 = result.
Now the final result contains all the digits from 1 to 9. Hence it is a Fascinating Number.
Procedure for Fascinating Number
- First, check if the entered/given number has three digits or not. If not, print “cannot be a Fascinating Number”.
- Else, Multiply the given number with 2 and 3.
- Then convert the product result into a string and Concatenate those strings along with the original number.
- Iterate the string that we get after concatenation and also keep the frequency count of the digits.
- Print “Not a Fascinating Number” if any of the digits (1 to 9) is missing or repeated.
- Else, print “It is a Fascinating Number”.
C Program for Fascinating Number
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
//function
int countDigits(int n)
{
int count = 0;
while (n > 0)
{
count++;
n /= 10;
}
return count;
}
int main(void)
{
int num;
printf("Enter a number: ");
scanf("%d", &num);
//calculating the product
int product2 = num * 2;
int product3 = num * 3;
//Concatinating all three
int concatNum = 0;
concatNum += num;
concatNum = concatNum* pow(10, countDigits(product2)) + product2;
concatNum = concatNum* pow(10, countDigits(product3)) + product3;
//Count the occurence
int count[10] = { 0 };
while (concatNum > 0)
{
count[concatNum % 10]++;
concatNum = concatNum / 10;
}
//Check for 1
bool isFound = true;
for (int i = 1; i < 10; i++)
{
if (count[i] != 1)
{
isFound = false;
break;
}
}
//Display the result
if (isFound)
printf("%d is a Fascinating number.", num);
else
printf("%d is NOT a Fascinating number.", num);
return 0;
}
Output:
Enter a number: 192
192 is a Fascinating number.