Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 30
1

Золото племени АББА

22.01.2016, 18:40. Показов 3718. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Я пытался решить довольно-таки простенькую задачку "Золото племени АББА".
Проблема в том, что мой алгоритм не может хранить очень большие числа, поэтому на Тесте № 3 программа выводит некорректный результат.
Текст задачи:

Кликните здесь для просмотра всего текста
Главный вождь племени Абба не умеет считать. В обмен на одну из его земель вождь другого племени предложил ему выбрать одну из трех куч с золотыми монетами. Но вождю племени Абба хочется получить наибольшее количество золотых монет. Помогите вождю сделать правильный выбор!


№ INPUT.TXT OUTPUT.TXT
1 5 7 3 7
2 987531 234 86364 987531
3 189285 283 4958439238923098349024 4958439238923098349024

Мой код:

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
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
    unsigned int Input[3];
    ifstream fin("INPUT.TXT");
    if (fin) {
        for (int i = 0; i < 3; ++i)
            fin >> Input[i];
    }
    else
        cout << "ERROR OPENING FILE";
    unsigned int Result;
    Result = 0;
    for (int i = 0; i < 3; ++i)
        if (Result < Input[i])
            Result = Input[i];
    ofstream fout{ "OUTPUT.TXT" };
    fout << Result;
    system("pause");
    return 0;
 
}
Вы не знаете как это исправить? Заранее благодарен за ответ.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2016, 18:40
Ответы с готовыми решениями:

Задача Золото племени АББА
Почему-то у меня не проходит по одному из тестов решение для следующей задачи: Решение:...

Оптимизация программы "Золото племени АББА"
Помогите оптимизировать, если что задача: (Ссылка на сторонний ресурс удалена) (Время: 1 сек....

Главный вождь племени Абба не умеет считать
короче решил задачу вот код Program Srednee; Var max,Element:integer; f:file of integer; ...

Алфавит племени «тумба-юмба»
В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч» и «О». Нужно вывести на экран все...

18
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.01.2016, 18:43 2
roman0412,
C++
1
unsigned long long int Result = 0;
1
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 30
22.01.2016, 19:04  [ТС] 3
Цитата Сообщение от makfak Посмотреть сообщение
unsigned long long int Result = 0;
Спасибо. Я попробовал, но, к сожалению, число 4958439238923098349024 всё равно обрабатывается с ошибкой.
Какие внес правки:
unsigned long long int Input[3];
unsigned long long int Result;
Выводится:
14757395258967641292
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.01.2016, 19:08 4
Лучший ответ Сообщение было отмечено roman0412 как решение

Решение

roman0412, Тогда попробуйте со строками что ли. Им неважно сколько цифр.
1
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 30
22.01.2016, 19:13  [ТС] 5
Цитата Сообщение от makfak Посмотреть сообщение
roman0412, Тогда попробуйте со строками что ли. Им неважно сколько цифр.
Дело в том, что я должен сравнить введенные числа и вывести наибольшее.
Если тип переменной char/string это вряд ли возможно.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
22.01.2016, 19:19 6
roman0412, тогда пиши свой класс сверхбольших чисел, если умеешь
1
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
22.01.2016, 19:24 7
Лучший ответ Сообщение было отмечено Sergio Leone как решение

Решение

считываете в string ,если длины разные у всех то берете с наибольшей длиной ,если есть одинаковые длины то ищите максимальное по значению из них
2
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
22.01.2016, 19:30 8
roman0412, А по-моему всё прекрасно сравнивается.
Как думаешь, каким будет результат этой программы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string str = "11154646464646";
    string str2 = "11154646464645";
    if( str < str2 ) cout << "asdd";
    if( str2 < str ) cout << "qweq";
    cin.get();
    return 0;
}
1
24 / 24 / 7
Регистрация: 25.04.2013
Сообщений: 195
22.01.2016, 20:19 9
для решения больших чисел DCB числа подходят же тут только упакованные или не упакованные DBC числа использовать, 1 байт 1 число или 2.

Добавлено через 2 минуты
А если int в 64 бита число влезет с лонгами логнами, считали?
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
22.01.2016, 21:16 10
Не знаю, получится ли, но можно попробовать с числами long double поработать.
0
1 / 1 / 2
Регистрация: 22.01.2016
Сообщений: 6
22.01.2016, 21:43 11
для хранения чисел за пределами переменных лучше всего использовать массивы, советую почитать про длинную арифметику.
0
Dmitriy_73
22.01.2016, 22:07
  #12

Не по теме:

makfak, а этой?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string str = "11154646464646";
    string str2 = "2";
    if( str < str2 ) cout << "asdd";
    if( str2 < str ) cout << "qweq";
    cin.get();
    return 0;
}

0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
23.01.2016, 12:10 13
Dmitriy_73, Ну ладно, можно свою функцию написать, это не сложно, или сделать, как предложил Dimension.
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
23.01.2016, 12:17 14
Горячие финские парни, не спорьте.
Зачем привлекать длинную арифметику там, где без неё проще?!
Совет от Dimension однозначно в тему! Сравнили длины строк, какая длинее - там число и больше, если длины строк одинаковы, просто сравнили строки. и всё. пара if-ов и задача решена!
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
23.01.2016, 13:00 15
Для строк лидирующие нули надо не забыть обрезать.
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
23.01.2016, 13:44 16
zer0mail, думаю у натуральных чисел не может быть нулей лидирующих
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
23.01.2016, 15:38 17
Цитата Сообщение от Dimension Посмотреть сообщение
zer0mail, думаю у натуральных чисел не может быть нулей лидирующих
В тестах вполне могут быть и, насколько я помню, есть.
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
23.01.2016, 23:55 18
Цитата Сообщение от zer0mail Посмотреть сообщение
В тестах вполне могут быть и, насколько я помню, есть.
ты заблуждаешься.
Если речь идёт про задачу "Золото племени АББА" на acmp, то там никаких ведущих нулей нет.
Это я тебе точно говорю.
1
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
24.01.2016, 13:49 19
Согласен, память меня подвела. Но помню, что в какой-то подобной задаче тесты не проходили, пока не обрезал ведущие нули. Поэтому этот финт и запомнился.
1
24.01.2016, 13:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2016, 13:49
Помогаю со студенческими работами здесь

Золото vs пластмасса
В современное время очень распространенны украшения из пластмассы и аллюминя , которые заменяют...

Дана символьная строка.Подсчитать сколько раз в ней встречается подслово абба
Дана символьная строка.Подсчитать сколько раз в ней встречается подслово абба. В строке аббабба...

Наконец-то! Первое золото на Олимпиаде!
Российский борец греко-римского стиля Назир Манкиев, выступающий в весовой категории до 55 кг,...

Взлом игры Warspear Online на золото
Возможно ли взломать игру warspear online на золото желательно через телефон. Если да,то как? Эта...


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

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