Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/861: Рейтинг темы: голосов - 861, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27

Определить является ли десятичное четырехзначное число симметричным

20.06.2016, 19:45. Показов 160330. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть новая задача куда по круче этой.
Вот условие
Симметричное число
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева незначащими нулями.
Формат входных данных
Вводится единственное число.
Формат выходных данных
Выведите одно целое число - ответ на задачу.
Sample Input 1:
2002
Sample Output 1:
1
Sample Input 2:
2008
Sample Output 2:
37
Я предложил такое решение. Но оно признано не верным.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main() {
    int v;
    cin >> v;
    int a = (v/ 1000);
        int s = (v / 100 % 10);
        int d = (v / 10 % 10);
        int f = (v % 10);
    int t = (d + f) - (a + s);
    cout << (t*t) + 1;
    return 0;
}
Добавлено через 5 минут
забыл добавить.
Только +,-,/,*,%.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2016, 19:45
Ответы с готовыми решениями:

Определить является ли четырехзначное десятичное число палиндромом
Почему не проходит тест? Дано четырёхзначное число. Необходимо определить является ли оно палиндромом. Примечание: палиндром -...

Если данное четырехзначное число является симметричным, выведите 1
помогите ! В условии одной из задач на этом сайте написано: “Если данное четырехзначное число является симметричным, выведите 1, иначе...

Определить, является ли число симметричным
Решал задачу по симметрии. Когда запускаю, набор &quot;0110&quot; выдает неправильный ответ, не понимаю почему... Может какой-то мой алгоритм...

28
 Аватар для lawr
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
20.06.2016, 20:58
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
int main(){
    int n, n1=0;
    std::cin >> n;
    for (int i = 0; i < 2; i++)
    {
        n1 *= 10;
        n1 += n % 10;
        n /= 10;
        std::cout << n << ' ' << n1 << std::endl;
    }
    std::cout << n - n1 + 1;
}
0
👻👻👻
 Аватар для daniilorain
21 / 28 / 12
Регистрация: 22.04.2016
Сообщений: 166
20.06.2016, 21:08
Pascal
1
2
3
4
5
6
7
8
9
read(n);
//получаем 3 и 4 цифры
k := n mod 100;
//в n теперь 1 и 2 цифры
n := n div 100;
//в K меняем цифры местами
k := k div 10 + k mod 10 * 10;
//если число симметрично (левая и перевернутая правая части равны ) то получается 1, иначе "другое число"
write( n - k + 1 );
1
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
20.06.2016, 21:43  [ТС]
да только операторы цикла, рекурсию и т.д. использовать нельзя))))
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
20.06.2016, 21:58
dimon77,
C++
1
2
3
int x;
cin >> x;
cout.put(x % 100 - x / 100 % 10 + x / 1000 ? '1' : '0') << endl;
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
20.06.2016, 23:40  [ТС]
задачка интересная.
Во первых можно использовать только операторы: +,-,*,/,%
Во вторых нужно сделать так чтоб код работал не только по двум условиям 2002 и 2008 но и 9173, 3232 334, 202 и т.д.
сижу с утра .....
лажа моего кода в том, что при 2002 он выдает 1 и при 6491 выдает 1......

SOS!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 47 минут
C++
1
#include <iostream>
тоже не вариант(((((((((((((((((((((((((((((((

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using namespace std;
 
int main() {
    int v;
    cin >> v;
        int a = (v/ 1000);
        int s = (v / 100 % 10);
        int d = (v / 10 % 10);
        int f = (v % 10);
        int t = (a + s + d) - (s + d + f);
        
        cout << (t*t) + 1;
 
    return 0;
}
0
👻👻👻
 Аватар для daniilorain
21 / 28 / 12
Регистрация: 22.04.2016
Сообщений: 166
20.06.2016, 23:59
Прошу прощения за приведённый выше код на паскале. Ваша задача легко гуглится, первая ссылка на stackoverflow, там приведён код на паскале (к сожалению, у меня не получилось добавить ссылку, поэтому код добавил), с паскаля нетрудно перевести на c++.
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 11:18  [ТС]
Спасибо за подсказку.
Но там правильного решения нет.
Такие же проблемы как и у меня все хорошо пока не встречается числа : 7447, 7474, 9146 эти все числа в этом коде покажут 1
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.06.2016, 11:35
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
bool sym(int a)
{
    return(((a/1000) == (a%10)) && ((a/100 % 10) == (a/10 % 10)));
}
 
int main() 
{
    int v;
    cin >> v;
    cout << sym(v) << endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 11:42  [ТС]
Только +,-,/,*,%.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.06.2016, 11:50
Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main() {
    int v;
    cin >> v;
    int a = (v/ 1000);
        int s = (v / 100 % 10);
        int d = (v / 10 % 10);
        int f = (v % 10);
    int t = (a - f)*(a - f) + (s - d)*(s - d) + 1;
    cout << t;
    return 0;
}
Добавлено через 3 минуты
Чуток подправил
1
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 12:06  [ТС]
пример
7474 и 7447 оба числа симметричные в данном задании
можно изменить + на минус тогда работает но теперь число например 6473 так же по данному коду даст на выходе 1 как и первые два. У меня как раз код не проходит проверку xyxy
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.06.2016, 12:13
dimon77, это было в предыдущей версии. Я ж внес коррекцию...
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 12:21  [ТС]
смотри твой код выдаст:
7474=13 - нужно 1
4774=1-правильно
6473=19-правильно
если поменять + на -
7474=1 - правильно
4774=1-правильно
6473=1-нужно другое
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.06.2016, 12:28
Разве 7474 - симметричное число?
Симметричные - это те, которые читаются одинаково слева направо и справа налево.
Определись для начала с определением
0
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 12:48  [ТС]
Извини друг! Не прав! Сработало! Не знаю как но верно!!!!
У меня аналоги не проходили, а отличие только в отсутствии умножения ...
По этому я грешным делом подумал что авторы решили заморочится до типа 7474....зеркало
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.06.2016, 12:59
dimon77, что значит, не знаю как?
число будет симметричным, если первая цифра равна последней, а вторая равна третьей.
Что я и реализовал в самой первой версии.
Применительно к последней реализации, считаем сумму квадратов разниц первой и последней и второй и третьей.
Квадрат необходим, чтобы убрать возможность, когда одна разность даст, например, -2, а вторая даст +2
Например, 6473 ! Т.о., проверяем, чтобы данные цифры были попарно одинаковые, только тогда число будет симметричным
2
0 / 0 / 0
Регистрация: 18.06.2016
Сообщений: 27
21.06.2016, 13:46  [ТС]
(a-f) +(s-d) +1 у меня не принимал. Но в итоге как показал твой пример проблема была в знаках. По этому я сразу и не понял в чем суть. Спасибо
0
0 / 0 / 0
Регистрация: 02.01.2019
Сообщений: 1
03.01.2019, 13:34
Доброго времени суток.
Надеюсь я не нарушу правил, в python решил таким образом:
Python
1
2
3
4
5
6
7
8
N = int(input())
n1 = N // 1000
n2 = N // 100 % 10
n3 = N // 10 - n1 * 100 - n2 * 10
n4 = N % 10
S1 = (n1 - n4) ** 2
S2 = (n2 - n3) ** 2
print(S1 + S2 + 1)
0
0 / 0 / 1
Регистрация: 21.10.2018
Сообщений: 3
19.02.2019, 19:10
Python
1
2
3
4
5
6
7
v = int(input())
a = v // 1000
s = v // 100 % 10
d = v // 10 % 10
f = v % 10
t = (a - f) * (a - f) + (s - d) * (s - d) + 1
print(t)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2019, 19:10
Помогаю со студенческими работами здесь

Определить, является ли число симметричным
Помогите, пожалуйста, написать программу, которая определяет, является ли число симметричным(одинаково читается и слева направо, и справа...

Определить, является ли число суммарно симметричным
{deleted} Дано целое пятизначное число. Определить, является ли число суммарно симметричным (сумма первой и последней цифры равна сумме...

Дано натуральное четырехзначное число n. Определить, является ли это число перевертышем
Дано натуральное четырехзначное число n. Определить, является ли это число перевертышем. Например, числа 2222, 6116, 0440 и т.д.

Определить является ли десятичное число палиндромом
Реализовать метод isPalindromicNumber, определяющий является ли число палиндромом. При решении использовать только арифметические...

Определить является ли десятичное число палиндромом
Всем привет! У меня не получается решить задачу на числовой палиндром, лишь 8 из 10 тестов проходят , если быть точнее. Суть задачи в том,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru