Given two integers N and X. Then the duty is to return YES or NO by checking whether or not there exists a subarray in any permutation of size N such that it comprises a subarray, the place A*B is the same as the X. Right here A and B denote the variety of parts in sub-array and the primary ingredient of sorted subarray respectively.
Examples:
Enter: N = 5, X = 3
Output: YES
Rationalization: Thought-about the permutation is: {5, 2, 1, 3, 4}. Take the sub-array {A4. . . .A4} = { 3 }. Then A = 1 (As just one ingredient is there), B = 3 (If the sub-array is sorted then first ingredient of that sub-array will probably be 3). So, A * B = 1 * 3 = 3, Which is the same as Y. Subsequently, output is YES.Enter: N = 7, X = 56
Output: NO
Rationalization: It may be verified that no permutation of size N exists such that, It provides worth of A * B as 56. Subsequently, output is NO.
Method: To resolve the issue observe the under thought:
The issue is predicated on Grasping logic and remark primarily based. It may be solved by implementing these observations by implementing them in a code. The remark is, there’ll certainly exist a subarray if the situation (X % i == 0 && (X / i) ≥ 1 && (( X / i) ≤ N – i + 1) efficiently meet, the place i is the present ingredient.
Under are the steps for the above strategy:
- Create a Boolean Flag and mark it as False initially.
- Run a for loop from i = 1 to i ≤ N and observe the below-mentioned steps beneath the scope of the loop:
- If (X % i == 0 && (X / i) ≥ 1 && (( X / i) ≤ N – i + 1) is true then mark the flag as true and break the loop.
- Test if the flag is true, print YES else, print NO.
Under is the code to implement the strategy:
Java
|
Time Complexity: O(N)
Auxiliary Area: O(1), As no further area is used.