Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
roman0412
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 30
#1

Золото племени АББА - C++

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

Добрый день!
Я пытался решить довольно-таки простенькую задачку "Золото племени АББА".
Проблема в том, что мой алгоритм не может хранить очень большие числа, поэтому на Тесте № 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 18:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Золото племени АББА (C++):

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

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

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

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

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

Взлом игры Warspear Online на золото
Возможно ли взломать игру warspear online на золото желательно через телефон....

18
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
22.01.2016, 18:43 #2
roman0412,
C++
1
unsigned long long int Result = 0;
1
roman0412
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
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
22.01.2016, 19:08 #4
Лучший ответ Сообщение было отмечено roman0412 как решение

Решение

roman0412, Тогда попробуйте со строками что ли. Им неважно сколько цифр.
1
roman0412
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 30
22.01.2016, 19:13  [ТС] #5
Цитата Сообщение от makfak Посмотреть сообщение
roman0412, Тогда попробуйте со строками что ли. Им неважно сколько цифр.
Дело в том, что я должен сравнить введенные числа и вывести наибольшее.
Если тип переменной char/string это вряд ли возможно.
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
22.01.2016, 19:19 #6
roman0412, тогда пиши свой класс сверхбольших чисел, если умеешь
1
Dimension
Dimension
573 / 442 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
22.01.2016, 19:24 #7
Лучший ответ Сообщение было отмечено Sergio Leone как решение

Решение

считываете в string ,если длины разные у всех то берете с наибольшей длиной ,если есть одинаковые длины то ищите максимальное по значению из них
2
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
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
kuza84
-4 / 23 / 7
Регистрация: 25.04.2013
Сообщений: 195
22.01.2016, 20:19 #9
для решения больших чисел DCB числа подходят же тут только упакованные или не упакованные DBC числа использовать, 1 байт 1 число или 2.

Добавлено через 2 минуты
А если int в 64 бита число влезет с лонгами логнами, считали?
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
22.01.2016, 21:16 #10
Не знаю, получится ли, но можно попробовать с числами long double поработать.
0
Liorik
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
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 1
Завершенные тесты: 2
23.01.2016, 12:10 #13
Dmitriy_73, Ну ладно, можно свою функцию написать, это не сложно, или сделать, как предложил Dimension.
0
Sergio Leone
2462 / 1107 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
23.01.2016, 12:17 #14
Горячие финские парни, не спорьте.
Зачем привлекать длинную арифметику там, где без неё проще?!
Совет от Dimension однозначно в тему! Сравнили длины строк, какая длинее - там число и больше, если длины строк одинаковы, просто сравнили строки. и всё. пара if-ов и задача решена!
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
23.01.2016, 13:00 #15
Для строк лидирующие нули надо не забыть обрезать.
0
Dimension
Dimension
573 / 442 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
23.01.2016, 13:44 #16
zer0mail, думаю у натуральных чисел не может быть нулей лидирующих
0
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
23.01.2016, 15:38 #17
Цитата Сообщение от Dimension Посмотреть сообщение
zer0mail, думаю у натуральных чисел не может быть нулей лидирующих
В тестах вполне могут быть и, насколько я помню, есть.
0
Sergio Leone
2462 / 1107 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
23.01.2016, 23:55 #18
Цитата Сообщение от zer0mail Посмотреть сообщение
В тестах вполне могут быть и, насколько я помню, есть.
ты заблуждаешься.
Если речь идёт про задачу "Золото племени АББА" на acmp, то там никаких ведущих нулей нет.
Это я тебе точно говорю.
1
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,566
Записей в блоге: 1
24.01.2016, 13:49 #19
Согласен, память меня подвела. Но помню, что в какой-то подобной задаче тесты не проходили, пока не обрезал ведущие нули. Поэтому этот финт и запомнился.
1
24.01.2016, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2016, 13:49
Привет! Вот еще темы с решениями:

Написать функцию, которая найдёт возможный вариант размещения жителей племени
Есть такая интересная задачка, давалась в одном из вузов на экзамене в первом...

Чит на золото в WoW с помощью WPE pro
кто в WPE pro ломал WOW на голды? 3.3.5а клиент розкажите как

Считать количество медалей в последовательности золото, серебро, бронза
смысл такой - нужно считать количество медалей в последовательности...

Макрос Вместо Курса Доллара цены на металлы (золото)
Может кто знает как вытянуть с этого сайта котировку на золото? Вот готовый код...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru