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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
castielblak
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 6
#1

Задача по Олимпиаде - C++

25.10.2012, 16:31. Просмотров 1336. Ответов 10
Метки нет (Все метки)

Здравствуйте )
Буквально два дня назад написал Олимпиаду по программированию (Школьный этап).
Было всего 3 задачи . 2 задачи я решил , но 3 так и не смог.
Хотелось бы увидеть решение этой задачи.

Задача №3
Собственно 3 задача.

Задача "Инопланетянин"

Во время эксперимента Накодиллы было случайно получено сообщение инопланетян , содержащее формулу вида A + B = C.
Общественности стало интересно , какую же систему счисления использую инопланетяне. Так как внеземная цивилизация была достаточно развита, чтобы отправить межпланетное сообщение , Накодилла предположил, что основание системы счисления довольно мало. Требуется написать программу, которая находит минимальное основание системы счисления, при котором данное равенство выполняется.

ФОРМАТ ВВОДА :
В единственной строке входных данных содержится три числа A , B и C. Числа состоят из цифр от 0 до 9 и заглавных латинских букв от A до Z.

ФОРМАТ ВЫВОДА :
Требуется вывести единственное число - искомое основание системы счисления. Если такой системы счисления не существует , то вывести -1. Гарантируется, что ответ не превышает 36.


Пример ввода : 2 2 4
Пример вывода : 5

Пример ввода : 1A 2 20
Пример вывода : 12

Очень жду вашей помощи на С++ )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2012, 16:31     Задача по Олимпиаде
Посмотрите здесь:

Подготовка к олимпиаде :) - C++
В прошлом году я занял первое место в своей области. Время идет, и вот пришло время повторить свой подвиг, а то и первое место в...

Подготовка к олимпиаде - C++
Благодарен, что зашли на эту тему и надеюсь, что вы ответите по делу. Скоро олимпиада и по хорошему надо бы подготовиться к ней. На малом...

Олимпиадное задание на школьной олимпиаде - C++
75 боликов стоят дороже, чем 125 лёликов, но дешевле, чем 126 лёликов. Каждый из них дешевле рубля и стоит чётное количество копеек....

Структура со сведениями об олимпиаде по легкой атлетике - C++
Создать структуру, содержащую сведения об олимпиаде по легкой атлетике. Программа должна производить: 1) подсчет количества спортсменов,...

Решение задачек (Всероссийской олимпиаде школьников по информатике) - C++
Здравствуйте!! Возможно кто нибудь из вас участвовал в муниципальном этапе Всероссийской олимпиаде школьников по информатике и решил все...

Выбор учебника для подготовки к олимпиаде АЦМ - C++
Какой лучше подойдет для прочтения перед олимпиадой по программированию АЦМ?

Какие функции нужно знать для участия в олимпиаде - C++
не подскажите какие основные и самые важные функции/библиотеки нужно знать для участия в олимпиаде?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Biggs
16 / 10 / 0
Регистрация: 12.03.2011
Сообщений: 52
25.10.2012, 18:01     Задача по Олимпиаде #2
Берешь тридцать шесть систем
И перебираешь с начала
Первая совпадающая с ответом будет твоя-))
castielblak
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 6
25.10.2012, 19:47  [ТС]     Задача по Олимпиаде #3
Цитата Сообщение от Biggs Посмотреть сообщение
Берешь тридцать шесть систем
И перебираешь с начала
Первая совпадающая с ответом будет твоя-))
Хотелось бы посмотреть на код )
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.10.2012, 20:26     Задача по Олимпиаде #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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//////////////////////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
//////////////////////////////////////////////////////////////////////////////////////////////
bool  successfully_get_val_from_str_with_base
    (
        const T_str&    s,
        int             base,
        int&            val
    )
{
    char    *end    =   0;
    val             =   strtol
                            ( 
                                s.c_str(), 
                                &end, 
                                base 
                            );
 
    return      !s.empty()
            &&  *end    ==  0;
}
//////////////////////////////////////////////////////////////////////////////////////////////
int  get_min_base
    ( 
        const T_str&    L,
        const T_str&    R,
        const T_str&    SUM
    )
{
    const int   EMPTY_BASE  =   -1;
    const int   BASE_MIN    =   2;
    const int   BASE_MAX    =   36;
 
    int     val_L       =   0;
    int     val_R       =   0;
    int     val_SUM     =   0;
 
    for(int  base = BASE_MIN; base <= BASE_MAX; ++base)
    {
        if  (
                    successfully_get_val_from_str_with_base ( L,    base,   val_L       )
                &&  successfully_get_val_from_str_with_base ( R,    base,   val_R       )
                &&  successfully_get_val_from_str_with_base ( SUM,  base,   val_SUM     )
 
                &&  val_L + val_R == val_SUM
            )
        {
            return  base;
        }
    }
    return  EMPTY_BASE;
}
//////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        T_str   A;
        T_str   B;
        T_str   C;
 
        char    c   =   0;
        
        bool    str_is_correct    =   false;
 
        do
        {
            std::cout   <<  "Введите два слагаемые и сумму в некоторой системе счисления в одной строке:"
                        <<  std::endl;
            T_str   s;
 
            getline
                (
                    std::cin,
                    s
                );
 
            std::istringstream  ssin(s);
 
            ssin    >>  A;
            ssin    >>  B;
            ssin    >>  C;
            str_is_correct    =         !A.empty()
                                    &&  !B.empty()
                                    &&  !C.empty()
                                    &&  (ssin    >>  c)     ==  0;
        }while  ( !str_is_correct );
 
        std::cout   <<  get_min_base( A, B, C )
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }//for
}
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
25.10.2012, 21:01     Задача по Олимпиаде #5
Поможет
http://www.cyberforum.ru/blogs/18334/blog96.html
castielblak
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 6
25.10.2012, 23:03  [ТС]     Задача по Олимпиаде #6
Цитата Сообщение от Mr.X Посмотреть сообщение
...
Спасибо большое за код)
Цитата Сообщение от yleart
Так же спасибо за отличную статью )
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.10.2012, 06:00     Задача по Олимпиаде #7
castielblak, Меня несколько смущает отсутствие ограничений на длину чисел.
castielblak
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 6
28.10.2012, 16:35  [ТС]     Задача по Олимпиаде #8
Цитата Сообщение от soon Посмотреть сообщение
castielblak, Меня несколько смущает отсутствие ограничений на длину чисел.
Да (
Могу прислать вам даже фото с заданиями , я списал текст задачи под копирку.
Задание тяжелое для школьного этапа , хотя )
Не мне судить )
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.10.2012, 16:39     Задача по Олимпиаде #9
Задание тяжелое для школьного этапа
Да не особо.
Kgfq
28.10.2012, 16:48
  #10

Не по теме:

Mr.X, что за жесть у вас с табуляцией?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2012, 16:49     Задача по Олимпиаде
Еще ссылки по теме:

Задача по олимпиаде - PascalABC.NET
Собственно это мой код . Program Olymp; var i,h,m,s,h1,m1,s1,hase,min,hou,sec,min1,hou1,sec1 : integer ; //h,s,m для первой прогонки...

Задача считалочка по олимпиаде - PascalABC.NET
имя входного файла mult.in имя выходного файла mult.out максимальное время работы на одном тесте 1 секунда ограничение по памяти 64...

Задача для подготовки к региональной олимпиаде - C#
Учительница математики попросила школьников составить арифметическое выражение, так чтобы его значение было равно данному числу N и...

Задание к олимпиаде - Visual Basic
Задача такова: http://img535.imageshack.us/img535/2135/75089182.png Есть мысли по этому поводу... надо найти углы между каждыми...

Уравнение. На олимпиаде - Алгебра
2{x}^{4}+3{x}^{3}-3{x}^{2}-3x+2=0 Не эт чё такое такие сложные уранение на олимпиаде. на егэ в сто раз легче.


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

Или воспользуйтесь поиском по форуму:
castielblak
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 6
28.10.2012, 16:49  [ТС]     Задача по Олимпиаде #11
Цитата Сообщение от soon Посмотреть сообщение
Да не особо.

Дальше все равно прошел )
Решать логические задачи теперь для закрепления )
Yandex
Объявления
28.10.2012, 16:49     Задача по Олимпиаде
Ответ Создать тему
Опции темы

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