Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Realmucho
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
#1

По заданным числам определить, дружественны ли они - C++

06.08.2016, 13:14. Просмотров 294. Ответов 9
Метки нет (Все метки)

Назовем два числа дружными, если они состоят из одинаковых множеств цифр (вне зависимости от их количества) . По заданным числам определить, дружественны ли они.


1)3 5
No

2) 35 533
Yes

3)123 1112
No

4)125550 5201
Yes
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2016, 13:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос По заданным числам определить, дружественны ли они (C++):

Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник - C++
Заданы 4 вещественных числа. Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник помогите...

По заданным точкам двух треугольников определить подобны ли они - C++
Доброго времени суток, господа.Возникла проблема с этой задачей

По заданным целочисленным координатам на плоскости определить какую геометрическую фигуру они образуют - C++
По заданным целочисленным координатам четырех точек на плоскости определить , какую геометрическую фигуру они образуют , если их соединить...

По заданным действительным числам вычислить интегралы - C++
Задача №1. Функции При решении задачи определить и использовать функции или процедуры. По заданным действительными числами c и d...

Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной - C++
1)Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной . 2)Цифры даннго...

Определить треугольник по числам - C++
Здравствуйте. Форумчане тут грамотные, надеюсь на помощь. Задача поставлена так. Даны три действительных числа. Необходимо определить,...

9
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
06.08.2016, 14:33 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool used1[10];
bool used2[10];
for(int i=0;i<10;i++)
    used1[i] = false, used2[i]=false;
int a,b;
cin >> a >> b;
if(a==0) used1[0]=true;
if(b==0) used2[0]=true;
while(a!=0)
    used1[a%10]=true,a/=10;
while(b!=0)
    used1[b%10]=true,b/=10;
bool ans = true;
for(int i=0;i<10;i++)
    if(used1[i]!=used2[i])
        ans = false;
if(ans) cout << "Yes";
else cout << "No";
2
Байт
Диссидент
Эксперт C
16575 / 10845 / 1653
Регистрация: 24.12.2010
Сообщений: 20,985
06.08.2016, 15:12 #3
Krock21rus, Все правильно, только в строчках 14-17 лишние проходы цикла, когда уже стало ясно, что ans = false.
C++
1
2
3
4
for(i=0; i<10; i++)
  if (used1[i]!=used2[i]) break;
if (i<10) cout << "No";
else      cout << "Yes";
И переменная экономится...
0
Realmucho
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
06.08.2016, 16:03  [ТС] #4
а почему берем bool used1[10] ???
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
06.08.2016, 17:15 #5
Цитата Сообщение от Realmucho Посмотреть сообщение
а почему берем bool used1[10] ???
для удобства написания и большего понимания
конечно можно оставить один из них и проверять на другом числе на лету, но это больше по коду и сложнее воспринимать

Добавлено через 36 секунд
в строке 12 запрятался баг, не used1 а used2
0
zer0mail
2374 / 2004 / 199
Регистрация: 03.07.2012
Сообщений: 7,198
Записей в блоге: 1
06.08.2016, 17:41 #6
А если числа из 1000 знаков? Имхо, надо работать со строками.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.08.2016, 18:24 #7
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
//Назовем два числа дружными, если они состоят из одинаковых
//множеств цифр (вне зависимости от их количества) . По заданным
//числам определить, дружественны ли они.
 
 
//1)3 5
//No
 
//2) 35 533
//Yes
 
//3)123 1112
//No
 
//4)125550 5201
//Yes
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <set>
///////////////////////////////////////////////////////////////////////////////
typedef std::string             T_str;
typedef std::set    < char  >   T_symb_set;
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_str   L;
    T_str   R;
 
    std::cin    >>  L
                >>  R;
 
    std::cout   <<  (
                            T_symb_set  (   L.begin(),      L.end()     )
                        ==  T_symb_set  (   R.begin(),      R.end()     )
                            ?   "Yes"
                            :   "No"
                    )
 
                <<  std::endl;
}
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
06.08.2016, 18:26 #8
ааа, хорошо, тогда вот вам оптимальнейший алгоритм(из тех, что я смог придумать)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    bool used[2][10];
    for (int i = 0; i < 10; i++) used[0][i] = used[1][i] = false;
    char c;
    for (int j = 0; j < 2; j++)
    {
        cin >> c;
        while (isdigit(c))
        {
            used[j][c - '0'] = true;
            c = cin.get();
        }
    }
    bool ans = true;
    for(int i=0;i<10;i++)
    {
        if(used[0][i]!=used[1][i])
        {
            ans = false;
            break;
        }
    }
    if(ans) cout << "Yes";
    else cout << "No";
Добавлено через 54 секунды
Mr.X,
Цитата Сообщение от zer0mail Посмотреть сообщение
А если числа из 1000 знаков
А если числа из 10^10 знаков?
у вас памяти не хватит, а у меня всё норм будет

Добавлено через 1 минуту
Mr.X, а ещё у вас в 3 раза дольше
0
zer0mail
2374 / 2004 / 199
Регистрация: 03.07.2012
Сообщений: 7,198
Записей в блоге: 1
06.08.2016, 20:22 #9
Это Пушкин писал?
Цитата Сообщение от Krock21rus Посмотреть сообщение
int a,b;
cin >> a >> b;
Цитата Сообщение от Krock21rus Посмотреть сообщение
А если числа из 10^10 знаков?
у вас памяти не хватит, а у меня всё норм будет
Я привел какой-то свой алгоритм, у которого не хватит памяти? Вместо наездов лучше б "спасибо" сказали за полезный совет (int может не подойти для решения). Что касается "не хватит памяти", то строки можно считывать и обрабатывать порциями.
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
07.08.2016, 22:16 #10
zer0mail, читайте все сообщения
Цитата Сообщение от zer0mail Посмотреть сообщение
А если числа из 10^10 знаков?
у вас памяти не хватит, а у меня всё норм будет
это адресовалось Mr.X
Цитата Сообщение от zer0mail Посмотреть сообщение
Что касается "не хватит памяти", то строки можно считывать и обрабатывать порциями.
посмотрите сюда
там лучший алгоритм, из тех, что я смог придумать
1
07.08.2016, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2016, 22:16
Привет! Вот еще темы с ответами:

Определить, можно ли построить треугольник с длинами сторон, равным этим числам - C++
1)Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равным этим числам. Если можно, то ответить на...

Присвоить заданным переменным максимальное из их значений в случае, если они неравны, либо ноль, если равны - C++
Дано две переменные целого типа: А И В. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если...

Определить количество членов последовательности имеющих четные порядковые номера и являющихся нечетными числам - C++
2. Даны натуральные числа N, a0,a1,….,a(N-1). Определить количество членов последовательности имеющих четные порядковые номера и...

Найти углы треугольника, еcли они пропорциональны заданным числам A, B, C - Haskell
проблема в том, что не могу разобраться как сделать так чтобы функция принимала 3 значения и возвращала 3 значения, я думала сделать в виде...


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

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

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