Check if N can be obtained from 1 by repetitively multiplying by 10 or 20
Given an integer N, the task is to determine whether it is possible to obtain the value N from 1 by repetitively multiplying by 10 or 20. Print Yes if possible or No otherwise.
Examples:
Input: N = 200
Output: YES
Explanation:
1 * 10 -> 10 * 20 -> 200
Input: N = 90
Output: NO
Approach:
Follow the steps below to solve the problem:
- Count the number of trailing zeroes.
- After removing the trailing zeroes, if the remaining N cannot be expressed as a power of 2, print NO.
- Otherwise, if log2N <= Count of trailing zeroes, print Yes.
Below is the implementation of the above approach:
C++
// C++ program to check if N // can be obtained from 1 by // repetitive multiplication // by 10 or 20 #include<bits/stdc++.h> using namespace std; // Function to check if N can // be obtained or not void Is_possible( long long int N) { int C = 0; int D = 0; // Count and remove trailing // zeroes while (N % 10 == 0) { N = N / 10; C += 1; } // Check if remaining // N is a power of 2 if ( pow (2, ( int )log2(N)) == N) { D = ( int )log2(N); // To check the condition // to print YES or NO if (C >= D) cout << "YES" ; else cout << "NO" ; } else cout << "NO" ; } // Driver code int main() { long long int N = 2000000000000; Is_possible(N); } // This code is contributed by Stream_Cipher |
Java
// Java program to check if N // can be obtained from 1 by // repetitive multiplication // by 10 or 20 import java.util.*; class GFG{ static void Is_possible( long N) { long C = 0 ; long D = 0 ; // Count and remove trailing // zeroes while (N % 10 == 0 ) { N = N / 10 ; C += 1 ; } // Check if remaining // N is a power of 2 if (Math.pow( 2 , ( long )(Math.log(N) / (Math.log( 2 )))) == N) { D = ( long )(Math.log(N) / (Math.log( 2 ))); // To check the condition // to prlong YES or NO if (C >= D) System.out.print( "YES" ); else System.out.print( "NO" ); } else System.out.print( "NO" ); } // Driver code public static void main(String args[]) { long N = 2000000000000L; Is_possible(N); } } // This code is contributed by Stream_Cipher |
Python
# Python Program to check if N # can be obtained from 1 by # repetitive multiplication # by 10 or 20 import math # Function to check if N can # be obtained or not def Is_possible(N): C = 0 D = 0 # Count and remove trailing # zeroes while ( N % 10 = = 0 ): N = N / 10 C + = 1 # Check if remaining # N is a power of 2 if ( math.log(N, 2 ) - int (math.log(N, 2 )) = = 0 ): D = int (math.log(N, 2 )) # To check the condition # to print YES or NO if (C > = D): print ( "YES" ) else : print ( "NO" ) else : print ( "NO" ) # Driver Program N = 2000000000000 Is_possible(N) |
C#
// C# program to check if N // can be obtained from 1 by // repetitive multiplication // by 10 or 20 using System; class GFG{ static void Is_possible( long N) { long C = 0; long D = 0; // Count and remove trailing // zeroes while (N % 10 == 0) { N = N / 10; C += 1; } // Check if remaining // N is a power of 2 if (Math.Pow(2, ( long )(Math.Log(N) / (Math.Log(2)))) == N) { D = ( long )(Math.Log(N) / (Math.Log(2))); // To check the condition // to prlong YES or NO if (C >= D) Console.WriteLine( "YES" ); else Console.WriteLine( "NO" ); } else Console.WriteLine( "NO" ); } // Driver Code public static void Main() { long N = 2000000000000L; Is_possible(N); } } // This code is contributed by Stream_Cipher |
Javascript
<script> // Java script program to check if N // can be obtained from 1 by // repetitive multiplication // by 10 or 20 function Is_possible( N) { let C = 0; let D = 0; // Count and remove trailing // zeroes while (N % 10 == 0) { N = N / 10; C += 1; } // Check if remaining // N is a power of 2 if (Math.pow(2, (Math.log(N) / (Math.log(2)))) == N) { D = (Math.log(N) / (Math.log(2))); // To check the condition // to prlong YES or NO if (C >= D) document.write( "YES" ); else document.write( "NO" ); } else document.write( "NO" ); } // Driver code let N = 2000000000000; Is_possible(N); //this code is contributed by sravan kumar </script> |
Output:
YES
Time Complexity: O(log10(N))
Auxiliary Space: O(1)