Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 24.10.2018
Сообщений: 32
1

Максимальное число палиндром из результата умножения 2-х чисел

24.10.2018, 12:55. Показов 1336. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Потогите найти максильное число палиндрома из умножения из двух 4-ч значных чисел, к примеру 1234 * 4321.

Мой вариант не приводит ни к чему логичному:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.java.junior;
 
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
 
public class PalindromMax {
 
    private static Logger logger = Logger.getLogger(PalindromMax.class.getName());
 
    public static void main(String[] args) {
 
        List<Integer> palindroms = new ArrayList<>();
 
        for (int i = 1234; i < 12345; i++) {
            for (int j = 4321; j < 54321; j++) {
                int result = i * j;
 
                if (resultIsPalindrom(result)) {
                    palindroms.add(result);
                }
            }
        }
        String result = null;
        logger.info("Maximal palindrom is " + result);
    }
 
    private static boolean resultIsPalindrom(int result) {
        // TODO Auto-generated method stub
        return false;
    }
}
В концоле получим:
октяб. 24, 2018 12:54:58 PM com.java.junior.Palindrom main
INFO: Maximal palindrom is null

Понятно что чуж написана, подскажите что нибудь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2018, 12:55
Ответы с готовыми решениями:

Найти наибольшее число палиндром, которое образуется путем умножения двух простых пятизначных чисел
Напишіть програму, яка знаходить найбільше число паліндром, яке утворюється шляхом множення двох...

Вывести 20-ое число палиндром из натурального ряда чисел
надо написать программу которая выводит 20 число палиндром из натурального ряда чисел.

Найти минимальное число среди положительных чисел и максимальное число среди отрицательных чисел
Никак не могу понять ,как написать эту программу.Помогите пожалуйста. Задан одномерный массив А...

Вычислить количество нечетных чисел и максимальное отрицательное число в последовательности чисел
Дана последовательность чисел, заканчивающаяся нулем. Вычислить количество нечетных чисел и...

6
12 / 8 / 6
Регистрация: 10.07.2011
Сообщений: 374
Записей в блоге: 1
24.10.2018, 15:23 2
Цитата Сообщение от muskather Посмотреть сообщение
Потогите найти максильное число палиндрома из умножения из двух 4-ч значных чисел, к примеру 1234 * 4321.
Не совсем понимаю, что такое палиндром?
Нужно найти максимальную сумму произведения? Почему не подойдет число 9999?
------------------
Я правильно понимаю, что цифры в первом 4-х значном числе должны идти по возрастанию на один?
Т.е. abcd, где b=a+1, c=a+2, d= a+3, a — одна из цифр: 1,2,..,6?

Добавлено через 6 минут
upd. Почему в качестве примера приведено произведение 1234 * 4321 = 5332114? Это разве палиндром?
0
2 / 2 / 0
Регистрация: 24.10.2018
Сообщений: 32
24.10.2018, 15:31  [ТС] 3
Да, Вы правы, палиндром - это число или слово которое будет читатся что слева на право, что наоборот одинаково.
9999 верное значение. Вот как я решил задачу:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.java.junior;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
 
public class Palindrom {
 
    private static Logger logger = Logger.getLogger(Palindrom.class.getName());
 
    public static void main(String[] args) {
        int result = getMaxPalindrom();
        
        logger.info("Max palindrom is " + result);
    }
 
    public static int getMaxPalindrom() {
        
        List<Integer> palindrom = new ArrayList<>();
 
        for (int a = 11; a < 100; a++) {
            for (int b = 22; b < 100; b++) {
                int result = a * b;
 
                if (resultIsPalindrom(result)) {
                    palindrom.add(result);
                }
            }
        }
        return Collections.max(palindrom);
    }
 
    public static boolean resultIsPalindrom(int result) {
        // TODO Auto-generated method stub
        String palindrome = new StringBuilder(String.valueOf(result)).reverse().toString();
        return palindrome.equals(String.valueOf(result));
    }
}
В консоле выводится:
октяб. 24, 2018 3:34:20 PM com.java.junior.Palindrom main
INFO: Max palindrom is 9009


С четырех значными числами долго считается все, плюс процессор 2-х ядрный, главное решить задачу.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.10.2018, 15:52 4
Лучший ответ Сообщение было отмечено muskather как решение

Решение

почему бы не начинать с максимальных значений a и b и отнимать по единичке?
тогда первый же найденный палиндром - максимальный
PROFIT

Добавлено через 9 минут
типа такого
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Palindrome {
 
    private static Logger logger = Logger.getLogger(Palindrome.class.getName());
 
    public static void main(String[] args) {
        int result = getMaxPalindrome();
 
        logger.info("Max palindrome is " + result);
    }
 
    private static int getMaxPalindrome() {
        for (int a = 9999; a > 999; a--) {
            for (int b = 9999; b > 999; b--) {
                int result = a * b;
                if (isPalindrome(result)) return result;
            }
        }
        return -1;
    }
 
    private static boolean isPalindrome(int result) {
        final String str = String.valueOf(result);
        int length = str.length();
        for (int i = 0; i < length / 2; i++) {
            if (str.charAt(i) != str.charAt(length - 1 - i)) return false;
        }
        return true;
    }
}
1
2 / 2 / 0
Регистрация: 24.10.2018
Сообщений: 32
24.10.2018, 16:07  [ТС] 5
Согласен, так дальше выполняется быстрее. Спасибо за подсказку.
0
2700 / 2013 / 502
Регистрация: 17.02.2014
Сообщений: 9,389
25.10.2018, 13:46 6
еще один простой вариант))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class PalindromMax {
 
    private static void printMaxPalindrome() {
        for (int a = 9999; a > 999; a--) {
            for (int b = 9999; b > 999; b--) {
                int result = a * b;
                if (isPalindrome(result)) {
                    System.out.printf("%d = %d x %d",result, a,b);
                    return; }
            }
        }
    }
 
    private static boolean isPalindrome(int sourceNum) {
        int lengthSrcNum = (int)(Math.log10(sourceNum));
        int leftNum;
        int rightNum;
        int tmpDivder = (int)Math.pow(10,lengthSrcNum);
        for (int i = 0; i <= lengthSrcNum/2; i++) {
            leftNum = sourceNum / tmpDivder;
            rightNum = sourceNum % 10;
            if (leftNum != rightNum)
                return false;
            sourceNum -= rightNum;
            sourceNum -= tmpDivder * leftNum;
            sourceNum /= 10;
            tmpDivder /= 100;
 
        }
        return true;
    }
 
    public static void main(String[] args) {
        printMaxPalindrome();
    }
}
Bash
1
99000099 = 9999 x 9901
1
2 / 2 / 0
Регистрация: 24.10.2018
Сообщений: 32
29.10.2018, 15:08  [ТС] 7
Спасибо за предложеный вариант, возьму на вооружение)
0
29.10.2018, 15:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2018, 15:08
Помогаю со студенческими работами здесь

Последовательность вводится N целых чисел. Найдите минимальное и максимальное число из введенных чисел
Последовательность вводится N целых чисел. Найдите минимальное и максимальное число из введенных...

Последовательно вводится N целых чисел. Найти минимальное и максимальное число из введеных чисел
Последовательно вводится N целых чисел. Найти минимальное и максимальное число из введеных чисел.

Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе, идущих подряд
Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе,...

Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе, идущих подряд
Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе,...

Найти максимальное число из 3 чисел
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { int x, y, z;...

Найти максимальное число из N случайных чисел
Найти максимальное число из N случайных чисел. Диапазон генерации случайного числа задается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru