Kun arvo n on annettu, selvitä suurin palindromiluku, joka on kahden n-numeroisen luvun tulo.
Esimerkkejä:
Input : n = 2 Output : 9009 9009 is the largest number which is product of two 2-digit numbers. 9009 = 91*99. Input : n = 3 Output : 906609Recommended Practice Suurin tuote Pallindromi Kokeile sitä!
Alla on vaiheet tarvittavan numeron löytämiseksi.
- Etsi n-numeroisen luvun alaraja. Esimerkiksi arvolle n = 2 alaraja on 10.
- Etsi yläraja n-numeroiselle luvulle. Esimerkiksi n = 2 yläraja on 99.
- Harkitse kaikkia lukupareja aina, kun luku on alueella [alaraja yläraja]
Alla on yllä olevien vaiheiden toteutus.
C++// C++ problem to find out the // largest palindrome number which // is product of two n digit numbers #include using namespace std; // Function to calculate largest // palindrome which is product of // two n-digits numbers int larrgestPalindrome(int n) { int upper_limit = pow(10n) - 1; // largest number of n-1 digit. // One plus this number is lower // limit which is product of two numbers. int lower_limit = 1 + upper_limit / 10; // Initialize result int max_product = 0; for (int i = upper_limit; i >= lower_limit; i--) { for (int j = i; j >= lower_limit; j--) { // calculating product of // two n-digit numbers int product = i * j; if (product < max_product) break; int number = product; int reverse = 0; // calculating reverse of // product to check whether // it is palindrome or not while (number != 0) { reverse = reverse * 10 + number % 10; number /= 10; } // update new product if exist // and if greater than previous one if (product == reverse && product > max_product) max_product = product; } } return max_product; } // Driver code int main() { int n = 2; cout << larrgestPalindrome(n); return 0; }
Java // Java problem to find out the // largest palindrome number // which is product of two // n digit numbers. import java.lang.Math; class GFG { // Function to calculate largest // palindrome which isproduct of // two n-digits numbers static int larrgestPalindrome(int n) { int upper_limit = (int)Math.pow(10 n) - 1; // largest number of n-1 digit. // One plus this number // is lower limit which is // product of two numbers. int lower_limit = 1 + upper_limit / 10; // Initialize result int max_product = 0; for (int i = upper_limit; i >= lower_limit; i--) { for (int j = i; j >= lower_limit; j--) { // calculating product of two // n-digit numbers int product = i * j; if (product < max_product) break; int number = product; int reverse = 0; // calculating reverse of product // to check whether it is // palindrome or not while (number != 0) { reverse = reverse * 10 + number % 10; number /= 10; } // update new product if exist and if // greater than previous one if (product == reverse && product > max_product) max_product = product; } } return max_product; } // Driver code public static void main (String[] args) { int n = 2; System.out.print(larrgestPalindrome(n)); } } // This code is contributed by Anant Agarwal.
Python3 # Python problem to find # out the largest palindrome # number which is product of # two n digit numbers. # Function to calculate largest # palindrome which is # product of two n-digits numbers def larrgestPalindrome(n): upper_limit = (10**(n))-1 # largest number of n-1 digit. # One plus this number # is lower limit which is # product of two numbers. lower_limit = 1 + upper_limit//10 max_product = 0 # Initialize result for i in range(upper_limitlower_limit-1 -1): for j in range(ilower_limit-1-1): # calculating product of # two n-digit numbers product = i * j if (product < max_product): break number = product reverse = 0 # calculating reverse of # product to check # whether it is palindrome or not while (number != 0): reverse = reverse * 10 + number % 10 number =number // 10 # update new product if exist and if # greater than previous one if (product == reverse and product > max_product): max_product = product return max_product # Driver code n = 2 print(larrgestPalindrome(n)) # This code is contributed # by Anant Agarwal.
C# // C# problem to find out the // largest palindrome number // which is product of two // n digit numbers. using System; class GFG { // Function to calculate largest // palindrome which isproduct of // two n-digits numbers static int larrgestPalindrome(int n) { int upper_limit = (int)Math.Pow(10 n) - 1; // largest number of n-1 digit. // One plus this number // is lower limit which is // product of two numbers. int lower_limit = 1 + upper_limit / 10; // Initialize result int max_product = 0; for (int i = upper_limit; i >= lower_limit; i--) { for (int j = i; j >= lower_limit; j--) { // calculating product of two // n-digit numbers int product = i * j; if (product < max_product) break; int number = product; int reverse = 0; // calculating reverse of product // to check whether it is // palindrome or not while (number != 0) { reverse = reverse * 10 + number % 10; number /= 10; } // update new product if exist and if // greater than previous one if (product == reverse && product > max_product) max_product = product; } } return max_product; } // Driver code public static void Main () { int n = 2; Console.Write(larrgestPalindrome(n)); } } // This code is contributed by nitin mittal.
PHP // PHP problem to find out // the largest palindrome // number which is product // of two n digit numbers // Function to calculate // largest palindrome which // is product of two n-digit numbers function larrgestPalindrome($n) { $upper_limit = 0; // Loop to calculate upper bound // (largest number of n-digit) for ($i = 1; $i <= $n; $i++) { $upper_limit *= 10; $upper_limit += 9; } // largest number of n-1 digit // One plus this number // is lower limit which is // product of two numbers. $lower_limit = 1 + (int)($upper_limit / 10); // Initialize result $max_product = 0; for ($i = $upper_limit; $i >= $lower_limit; $i--) { for ($j = $i; $j >= $lower_limit; $j--) { // calculating product of // two n-digit numbers $product = $i * $j; if ($product < $max_product) break; $number = $product; $reverse = 0; // calculating reverse of // product to check whether // it is palindrome or not while ($number != 0) { $reverse = $reverse * 10 + $number % 10; $number = (int)($number / 10); } // update new product if exist // and if greater than previous one if ($product == $reverse && $product > $max_product) $max_product = $product; } } return $max_product; } // Driver code $n = 2; echo(larrgestPalindrome($n)); // This code is contributed by Ajit. ?> JavaScript <script> // Javascript problem to find out the // largest palindrome number // which is product of two // n digit numbers. // Function to calculate largest // palindrome which isproduct of // two n-digits numbers function larrgestPalindrome(n) { let upper_limit = Math.pow(10 n) - 1; // largest number of n-1 digit. // One plus this number // is lower limit which is // product of two numbers. let lower_limit = 1 + parseInt(upper_limit / 10 10); // Initialize result let max_product = 0; for (let i = upper_limit; i >= lower_limit; i--) { for (let j = i; j >= lower_limit; j--) { // calculating product of two // n-digit numbers let product = i * j; if (product < max_product) break; let number = product; let reverse = 0; // calculating reverse of product // to check whether it is // palindrome or not while (number != 0) { reverse = reverse * 10 + number % 10; number = parseInt(number / 10 10); } // update new product if exist and if // greater than previous one if (product == reverse && product > max_product) max_product = product; } } return max_product; } let n = 2; document.write(larrgestPalindrome(n)); </script>
Lähtö:
9009
Aika monimutkaisuus: O(n*n*log10(tuote)), jossa n on laskettu yläraja ja tuote on (kahden n-numeroisen luvun tulo)
Aputila: O(1), koska lisätilaa ei tarvita|
Tässä viestissä käytetty lähestymistapa on yksinkertainen ja suoraviivainen. Kommentoi jos löydät paremman lähestymistavan.