Related Articles

# Check if the product of every contiguous subsequence is different or not in a number

• Difficulty Level : Medium
• Last Updated : 09 Jun, 2021

Given an integer N, the task is to check if the product of every consecutive set of digits is distinct or not.

Examples:

Input: N = 234
Output: Yes

All the productas are distinct.

Input: N = 1234
Output: No
Set {1, 2} and {2} both the same product i.e. 2.

Approach: Store the product of digits of every contiguous subsequence in a set. If the product to be inserted is already present in the set at any point then the answer is “No” else all the product are distinct in the end.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function that returns true if the product``// of every digit of a contiguous subsequence``// is distinct``bool` `productsDistinct(``int` `N)``{``    ``// To store the given number as a string``    ``string s = ``""``;` `    ``// Append all the digits``    ``// starting from the end``    ``while` `(N) {``        ``s += (``char``)(N % 10 + ``'0'``);``        ``N /= 10;``    ``}` `    ``// Reverse the string to get``    ``// the  original number``    ``reverse(s.begin(), s.end());` `    ``// Store size of the string``    ``int` `sz = s.size();` `    ``// Set to store product of``    ``// each contiguous subsequence``    ``set<``int``> se;` `    ``// Find product of every``    ``// contiguous subsequence``    ``for` `(``int` `i = 0; i < sz; i++) {``        ``int` `product = 1;``        ``for` `(``int` `j = i; j < sz; j++) {``            ``product *= (``int``)(s[j] - ``'0'``);` `            ``// If current product already``            ``// exists in the set``            ``if` `(se.find(product) != se.end())``                ``return` `false``;``            ``else``                ``se.insert(product);``        ``}``    ``}` `    ``return` `true``;``}` `// Driver code``int` `main()``{``    ``int` `N = 2345;` `    ``if` `(productsDistinct(N))``        ``cout << ``"Yes"``;``    ``else``        ``cout << ``"No"``;` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.util.*;` `class` `GFG``{` `// Function that returns true if``// the product of every digit of a``// contiguous subsequence is distinct``static` `boolean` `productsDistinct(``int` `N)``{``    ` `    ``// To store the given number``    ``// as a string``    ``String s = ``""``;` `    ``// Append all the digits``    ``// starting from the end``    ``while` `(N > ``0``)``    ``{``        ``s += (``char``)(N % ``10` `+ ``'0'``);``        ``N /= ``10``;``    ``}` `    ``// Reverse the string to get``    ``// the original number``    ``s = reverse(s);` `    ``// Store size of the string``    ``int` `sz = s.length();` `    ``// Set to store product of``    ``// each contiguous subsequence``    ``HashSet se = ``new` `HashSet();` `    ``// Find product of every``    ``// contiguous subsequence``    ``for` `(``int` `i = ``0``; i < sz; i++)``    ``{``        ``int` `product = ``1``;``        ``for` `(``int` `j = i; j < sz; j++)``        ``{``            ``product *= (``int``)(s.charAt(j) - ``'0'``);` `            ``// If current product already``            ``// exists in the set``            ``if` `(se.contains(product))``                ``return` `false``;``            ``else``                ``se.add(product);``        ``}``    ``}``    ``return` `true``;``}` `static` `String reverse(String input)``{``    ``char``[] a = input.toCharArray();``    ``int` `l, r;``    ``r = a.length - ``1``;``    ``for` `(l = ``0``; l < r; l++, r--)``    ``{``        ``// Swap values of l and r``        ``char` `temp = a[l];``        ``a[l] = a[r];``        ``a[r] = temp;``    ``}``    ``return` `String.valueOf(a);``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``2345``;` `    ``if` `(productsDistinct(N))``        ``System.out.println(``"Yes"``);``    ``else``        ``System.out.println(``"No"``);``    ``}``}` `// This code is contributed``// by PrinciRaj1992`

## Python3

 `# Python 3 implementation of the approach` `# Function that returns true if the product``# of every digit of a contiguous subsequence``# is distinct``def` `productsDistinct(N):``     ` `    ``# To store the given number as a string``    ``s ``=` `""` `    ``# Append all the digits``    ``# starting from the end``    ``while` `(N):``        ``s ``+``=` `chr``(N ``%` `10` `+` `ord``(``'0'``))``        ``N ``/``/``=` `10` `    ``# Reverse the string to get``    ``# the original number``    ``s ``=` `s[::``-``1``]` `    ``# Store size of the string``    ``sz ``=` `len``(s)` `    ``# Set to store product of``    ``# each contiguous subsequence``    ``se ``=` `[]` `    ``# Find product of every``    ``# contiguous subsequence``    ``for` `i ``in` `range``(sz):``        ``product ``=` `1``        ``for` `j ``in` `range``(i, sz, ``1``):``            ``product ``*``=` `ord``(s[j]) ``-` `ord``(``'0'``)` `            ``# If current product already``            ``# exists in the set``            ``for` `p ``in` `range``(``len``(se)):``                ``if` `se[p] ``=``=` `product:``                    ``return` `False``                ``else``:``                    ``se.append(product)` `    ``return` `True` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``N ``=` `2345` `    ``if` `(productsDistinct(N)):``        ``print``(``"Yes"``)``    ``else``:``        ``print``(``"No"``)``        ` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# implementation of the approach``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{` `// Function that returns true if``// the product of every digit of a``// contiguous subsequence is distinct``static` `Boolean productsDistinct(``int` `N)``{``    ` `    ``// To store the given number``    ``// as a string``    ``String s = ``""``;` `    ``// Append all the digits``    ``// starting from the end``    ``while` `(N > 0)``    ``{``        ``s += (``char``)(N % 10 + ``'0'``);``        ``N /= 10;``    ``}` `    ``// Reverse the string to get``    ``// the original number``    ``s = reverse(s);` `    ``// Store size of the string``    ``int` `sz = s.Length;` `    ``// Set to store product of``    ``// each contiguous subsequence``    ``HashSet<``int``> se = ``new` `HashSet<``int``>();` `    ``// Find product of every``    ``// contiguous subsequence``    ``for` `(``int` `i = 0; i < sz; i++)``    ``{``        ``int` `product = 1;``        ``for` `(``int` `j = i; j < sz; j++)``        ``{``            ``product *= (``int``)(s[j] - ``'0'``);` `            ``// If current product already``            ``// exists in the set``            ``if` `(se.Contains(product))``                ``return` `false``;``            ``else``                ``se.Add(product);``        ``}``    ``}``    ``return` `true``;``}` `static` `String reverse(String input)``{``    ``char``[] a = input.ToCharArray();``    ``int` `l, r;``    ``r = a.Length - 1;``    ``for` `(l = 0; l < r; l++, r--)``    ``{``        ``// Swap values of l and r``        ``char` `temp = a[l];``        ``a[l] = a[r];``        ``a[r] = temp;``    ``}``    ``return` `String.Join(``""``,a);``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``int` `N = 2345;` `    ``if` `(productsDistinct(N))``        ``Console.WriteLine(``"Yes"``);``    ``else``        ``Console.WriteLine(``"No"``);``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output:
`Yes`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up