Форум программистов, компьютерный форум CyberForum.ru

Задача с палиндромом. - C++

Войти
Регистрация
Восстановить пароль
 
Александр94_94
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 20
04.11.2011, 23:41     Задача с палиндромом. #1
Помогите решить вот такую задачу (на С):
Даны натуральные числа N и M. В диапазоне N до M найти все палиндромы, которые при возведении в квадрат так же дают палиндром.

P.S. Для решения нужно использовать условные операторы, циклы; нельзя использовать массив. Возможно можно использовать какие-то новые библиотеки (я лично знаю только stdio.h и math.h).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 23:41     Задача с палиндромом.
Посмотрите здесь:

Определить, является ли число палиндромом C++
Проверить является ли слово палиндромом C++
C++ Является ли это слово палиндромом.
C++ Задача с палиндромом (измененная)
Является ли строка палиндромом C++
Является ли строка палиндромом C++
Задание с палиндромом C++
Проверить ,является ли введённое слово палиндромом (задача на рекурсию) C++
Выяснить, является ли строка палиндромом. C++
Является ли число палиндромом C++
Является ли число палиндромом C++
C++ Определить, является ли число палиндромом

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4947 / 3023 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
05.11.2011, 00:02     Задача с палиндромом. #2
C
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
#include <stdio.h>
 
typedef unsigned long uint32_t;
 
uint32_t reverse(uint32_t number)
{
    uint32_t result = 0;
    
    while (number != 0)
    {
        result = result * 10 + number % 10;
        number /= 10;
    }
    
    return result;
}
 
int is_palindrome(uint32_t number)
{
    return number == reverse(number);
}
 
int main(void)
{
    uint32_t n, m;
    
    uint32_t i;
    
    printf("Enter N: ");
    scanf("%ld", &n);
    printf("Enter M: ");
    scanf("%ld", &m);
    
    for (i = n; i <= m; ++i)
        if (is_palindrome(i) && is_palindrome(i * i))
            printf("%ld\n", i);
 
    return 0;
}
Александр94_94
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 20
05.11.2011, 00:24  [ТС]     Задача с палиндромом. #3
А можно более легкое (пусть даже менее эффективное) решение этой задачи? Или, если не сложно, прокомментируйте пожалуйсто с 3 по 27 строку, а то мне мало понятно что там происходит...т.к. большей часть решали задачи вида:
C
1
2
3
4
#include<stdio.h>
void main ()
{... 
}
silent_1991
Эксперт C++
4947 / 3023 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
05.11.2011, 00:32     Задача с палиндромом. #4
C
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
40
41
#include <stdio.h>
 
int main(void)
{
    unsigned n, m;
    
    unsigned i;
    unsigned copy_i, sqr_i;
    unsigned reverse_copy_i, reverse_sqr_i;
    
    printf("Enter N: ");
    scanf("%u", &n);
    printf("Enter M: ");
    scanf("%u", &m);
    
    for (i = n; i <= m; ++i)
    {
        copy_i = i;
        reverse_copy_i = 0;
 
        while (copy_i != 0)
        {
            reverse_copy_i = reverse_copy_i * 10 + copy_i % 10;
            copy_i /= 10;
        }
 
        sqr_i = i * i;
        reverse_sqr_i = 0;
 
        while (sqr_i != 0)
        {
            reverse_sqr_i = reverse_sqr_i * 10 + sqr_i % 10;
            sqr_i /= 10;
        }
 
        if (i == reverse_copy_i && i * i == reverse_sqr_i)
            printf("%ld\n", i);
    }
 
    return 0;
}
Александр94_94
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 20
05.11.2011, 01:04  [ТС]     Задача с палиндромом. #5
Огромное Вам спасибо!
Yandex
Объявления
05.11.2011, 01:04     Задача с палиндромом.
Ответ Создать тему
Опции темы

Текущее время: 15:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru