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

Найти количество цифр, которые входят в каждое из 3 чисел - C++

Восстановить пароль Регистрация
 
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
12.04.2013, 13:39     Найти количество цифр, которые входят в каждое из 3 чисел #1
Даны три натуральных числа А, В, С. Найдите количество цифр, входящих одновременно в состав каждого из для этих чисел.
Входные данные: 3 числа, каждое в своей строке, не больше 1000000.
Выходные данные: единственное число - искомая величина.

Например, на входе:
234087
408209
1804
На выходе:
3
(числа 2, 0 и 8)

Как решить эту задачу, чтоб уложиться в 1 секунду времени выполнения?

Мне приходит идея только принимать 3 строки, находить из них самую длинную, потом в цикле с помощью strrchr() искать каждую цифру самой длинной строки в остальных двух, найденные цифры записывать в массив, потом из этого массива в новый копировать уникальные цифры, потом вывести длину нового массива.
Но как-то это все через ж
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 13:39     Найти количество цифр, которые входят в каждое из 3 чисел
Посмотрите здесь:

Дано натуральное число n>0 и последовательнось чисел из n елементов, найти количество всех чисел которые больше за 0 и меньше за 0 C++
C++ В алфавитном порядке вывести всё звонкие согласные, которые входят в каждое нечетное слово
C++ В одномерном массиве найти среднее арифметическое чисел, которые входят в диапазон от 5 до 10
В массиве целых чисел найти количество чисел с наименьшим количеством цифр C++
C++ Найти наименьшее среди тех чисел в первой последовательности, которые не входят во вторую
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
w8me
496 / 11 / 1
Регистрация: 10.04.2013
Сообщений: 44
12.04.2013, 15:06     Найти количество цифр, которые входят в каждое из 3 чисел #2
Переводить в массив можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
    
        int a1;
    scanf("%d",&a1);
    char w[15];
    int c1=0;
    while (a1>0)
    {
        w[c1]=a1%10;
        a1/=10;
        c1++;
    }
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
12.04.2013, 15:11  [ТС]     Найти количество цифр, которые входят в каждое из 3 чисел #3
Да это я в курсе... Можно и не переводить, а сразу прочесть 3 строки, вместо 3 чисел. Написал же.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.04.2013, 15:42     Найти количество цифр, которые входят в каждое из 3 чисел #4
если хочешь без строк - там логи еще проще. в цикле (или в ф-ии) деление + остаток от деления на 10 дадут тебе цифры числа
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
12.04.2013, 15:51     Найти количество цифр, которые входят в каждое из 3 чисел #5
писал на скорую руку, но думаю идея понятна
дальше крути как хочешь, с количеством и тп
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
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    //int arr[3] = {408209, 234087, 1804};
    int arr[3] = {667, 434746, 627364};
    sort(arr, arr + 3);
    reverse(arr, arr + 3); //последовательность должна быть отсортирована по убыванию
 
    while (arr[0])
    {
        int currVal = arr[0] % 10; //текущее проверяемое значение (цифра)
        bool isUniq1(true); //флаг присутствия цифры во втором числе
        bool isUniq2(true);
 
        int t = arr[1];
 
        while (t) {
 
            if ((t % 10) == currVal) {
                isUniq1 = false;
                break;
            }
            t/=10;
        }
 
        t = arr[2];
 
        while (t) {
 
            if ((t % 10) == currVal) {
                isUniq2 = false;
                break;
            }
            t/=10;
        }
 
        if (!isUniq1 && !isUniq2)
            cout << currVal << endl;
 
        arr[0]/=10;
    }
 
    return 0;
}
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 15:11  [ТС]     Найти количество цифр, которые входят в каждое из 3 чисел #6
Мое решение:
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
#include <iostream>
#include <algorithm>
#include <string.h>
 
using namespace std;
 
int main(void)
{
    char n1[8], n2[8], n3[8], p[8] = "\0";
    cin>>n1>>n2>>n3;
    int i, j = 0;
    for (i = 0; i < strlen(n1); i++)
        if (strchr(n2, n1[i]) && strchr(n3, n1[i])) p[j++] = n1[i];
 
    int n = strlen(p), k = 0;
    bool *flags = new bool[n];
    for (i = 0; i < n; i++) flags[i] = false;
 
    for (i = 0; i < n; i++)
        if (!flags[i])
            for (j = i + 1; j < n; j++)
                if (p[i] == p[j]) flags[j] = true;
 
    for (i = 0; i < n; i++) if (!flags[i]) k++;
    cout<<k;
    return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.04.2013, 03:33     Найти количество цифр, которые входят в каждое из 3 чисел #7
Цитата Сообщение от A1exSun Посмотреть сообщение
Например, на входе:
234087
408209
1804
На выходе:
3
(числа 2, 0 и 8)
вместо 2 должно быть 4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 11:56     Найти количество цифр, которые входят в каждое из 3 чисел
Еще ссылки по теме:

Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую C++
Найти произведение четных чисел, которые не входят в интервал C++
Найти произведение четных чисел, которые входят в интервал (10..20) и (30..40) C++

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

Или воспользуйтесь поиском по форуму:
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
14.04.2013, 11:56  [ТС]     Найти количество цифр, которые входят в каждое из 3 чисел #8
Цитата Сообщение от valeriikozlov Посмотреть сообщение
вместо 2 должно быть 4
Да, 4. Невнимательно смотрел.
Yandex
Объявления
14.04.2013, 11:56     Найти количество цифр, которые входят в каждое из 3 чисел
Ответ Создать тему
Опции темы

Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru