A Fascinating number is one which when multiplied by 2 and 3 and then, after the results are concatenated with the original number, the new number contains all the digits from 1 to 9 exactly once. There can be any number of zeroes and are to be ignored.
Example: 273
273 × 1 = 273
273 × 2 = 546
273 × 3 = 819
Concatenating the results we get, 273546819 which contains all digits from 1 to 9 exactly once.
Thus, 273 is a Fascinating number.
Accept two positive integers m and n, where m must be less than n and the values of both ‘m’ and ‘n’ must be greater than 99 and less than 10000 as user input. Display all Fascinating numbers that are in the range between m and n (both inclusive) and output them along with the frequency, in the format given below:
Test your program with the following data and some random data:
Example 1:
INPUT:
m = 100
n = 500
OUTPUT:
THE FASCINATING NUMBERS ARE:
192 219 273 327
FREQUENCY OF FASCINATING NUMBERS IS: 4
Example 2:
INPUT:
m = 900
n = 5000
OUTPUT:
THE FASCINATING NUMBERS ARE:
1902 1920 2019 2190 2703 2730 3027 3270
FREQUENCY OF FASCINATING NUMBERS IS: 8
Example 3:
INPUT:
m = 400
n = 900
OUTPUT:
THE FASCINATING NUMBERS ARE:
NIL
FREQUENCY OF FASCINATING NUMBERS IS: 0
Example 4:
INPUT:
m = 70
n = 450
OUTPUT:
INVALID INPUT
import java.util.Scanner;
class Fascinating{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.print("m = ");
int m = Integer.parseInt(in.nextLine());
System.out.print("n = ");
int n = Integer.parseInt(in.nextLine());
if(m > n || m < 100 || n < 100 || m > 9999 || n > 9999){
System.out.println("INVALID INPUT");
return;
}
int freq = 0;
System.out.println("THE FASCINATING NUMBERS ARE:");
for(int i = m; i <= n; i++){
int j = i * 2;
int k = i * 3;
String num = i + "" + j + "" + k;
if(digits(num) == 9){
System.out.print(i + " ");
freq++;
}
}
if(freq == 0)
System.out.print("NIL");
System.out.print("\nFREQUENCY OF FASCINATING NUMBERS IS: " + freq);
}
public static int digits(String num){
int count = 0;
for(char i = '1'; i <= '9'; i++){
int c = 0;
for(int j = 0; j < num.length(); j++){
if(i == num.charAt(j))
c++;
}
if(c == 1)
count++;
}
return count;
}
}