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 = 200Output:YESExplanation:

1 * 10 -> 10 * 20 -> 200Input:N = 90Output: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 log
_{2}N <= 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(log_{10}(N))**Auxiliary Space: **O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**