Bu problemde 3 basamaklı iki sayının çarpımından elde edilen en büyük polindrom sayıyı bulmamız isteniyor.
Polindrom sayı, sağdan ve soldan bakıldığında yazılışı aynı olan sayılardır.
Örneğin; 99, 8008, 42324
Şimdi bu problemi çözebilmek için yapmamız gereken adımları oluşturalım.
- İlk olarak bir sayının polindrom olup olmadığını tespit eden bir “isPrime” fonksiyonu oluşturalım.
- isPrime fonksiyonu içerisinde parametre olarak gelen sayıyı ters çevirelim.
- Eğer ters çevrilern sayı ilk sayıya eşitse bu bir polindrom sayıdır. Geriye 1 değerini döndürelim. Değilse 0’ı döndürelim.
- Main fonksiyonu içerisinde iç içe 2 döngü oluşturalım. i ve j nin çarpımı polindrom sayı ise ve “largestPalindrome” değişkeninin değerinden büyükse largestPalindrome’a çarpımı atayalım.
- En son, largestPolindrom değerini ekrana yazdıralım.
Bu işlemleri bir programlama dili ile gerçekleştirelim.
#include <stdio.h>
int isPalindrome(int number);
int main() {
int largestPalindrome = 0;
for(int i=999; i>=100; i--) {
for(int j=999; j>=100; j--) {
if(isPalindrome(i*j) && i*j > largestPalindrome) {
largestPalindrome = i*j;
}
}
}
printf("%d", largestPalindrome); // Result: 906609
return 0;
}
int isPalindrome(int number) {
int temp = number;
int reverse = 0;
while(number != 0) {
reverse = reverse * 10 + number % 10;
number /= 10;
}
if(reverse == temp)
return 1;
else
return 0;
}
Ve sonuç 906609.