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

Cколько раз встречаются числа с 4 одинаковыми цифрами - C++

Восстановить пароль Регистрация
 
Yuzalf
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 3
26.03.2014, 13:32     Cколько раз встречаются числа с 4 одинаковыми цифрами #1
Здравствуйте.Мне нужна помощь.

Для всех шестизначных натуральных чисел посчитать сколько раз встречаются числа, в записи которых присутсвует 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <math.h>
using namespace std;
void main (void)
{
    int count=0;
    for (int i=100000;i<=999999;i++) 
    {
              setlocale(LC_CTYPE,"rus");
        int a,b,c,d,e,f;
        a=i%10;
        b=(i/10)%10;
        c=(i/100)%10;
        d=(i/1000)%10;
        e=(i/10000)%10;
        f=(i/100000)%10;
        if ((a==b)&(a==c)&(a==d)) 
            {
            count++;
            continue;
            }
        else 
        {
            if ((a==b)&(a==c)&(a==e))
                {
                count++;
                continue;
                }
            else 
            {
                if ((a==b)&(a==c)&(a==f))
                {
                count++;
                continue;
                }
                else 
                {   
                    if ((a==b)&(a==d)&(a==e))
                    {
                    count++;
                    continue;
                    }
                    else 
                    {
                        if ((a==b)&(a==d)&(a==f))
                        {
                        count++;
                        continue;
                        }
                        else 
                        {
                            if ((a==b)&(a==e)&(a==f))
                            {
                            count++;
                            continue;
                            }
                            else 
                            {
                                if ((a==c)&(a==d)&(a==e)) 
                                {
                                count++;
                                continue;
                                }
                                else
                                {
                                    if ((a==c)&(a==d)&(a==f))
                                    {
                                    count++;
                                    continue;
                                    }
                                    else 
                                    {
                                        if ((a==c)&(a==e)&(a==f))
                                        {
                                        count++;
                                        continue;
                                        }
                                        else
                                        {
                                            if ((a==d)&(a==e)&(a==f))
                                            {
                                            count++;
                                            continue;
                                            }
                                            else 
                                            { 
                                                if ((b==c)&(b==d)&(b==e))
                                                {
                                                count++;
                                                continue;
                                                }
                                                else
                                                {
                                                    if ((b==c)&(b==d)&(b==f))
                                                    {
                                                    count++;
                                                    continue;
                                                    }
                                                    else 
                                                    {
                                                        if ((b==c)&(b==e)&(b==f))
                                                        {
                                                        count++;
                                                        continue;
                                                        }
                                                        else 
                                                        {
                                                            if ((b==d)&(b==e)&(b==f))
                                                            {
                                                            count++;
                                                            continue;
                                                            }
                                                            else 
                                                            {
                                                                if ((c==d)&(c==e)&(c==f))
                                                                {
                                                                count++;
                                                                continue;
                                                                }
                                                                else count=count;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    cout<<"Ответ: "<<count;
    cin.get();
}
Подсткажите пожалуйста, можно ли эту программу как-то упростить или написать иначе?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 13:32     Cколько раз встречаются числа с 4 одинаковыми цифрами
Посмотрите здесь:

C++ Вывести числа, которые встречаются в массиве несколько раз / один раз
C++ Сколько раз встречаются гласные буквы?
C++ Вывести все числа, которые встречаются в этом массиве несколько раз
Шифрование DES: на выходе получаются каждый раз новые результаты с одинаковыми входными данными C++
Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
K0nstantine
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 5
06.09.2014, 18:22     Cколько раз встречаются числа с 4 одинаковыми цифрами #2
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
#include <stdio.h>
#include <iostream>
using namespace std;
 
int main()
{
    int k = 0;
    for (int i = 100000; i < 1000000; i++)
    {
        int m[10];
        for (int j = 0; j < 10; j++)
            m[j] = 0;
        int t = i;
        while (t>0)
        {
            m[t % 10]++;
            t /= 10;
        }
        for (int j = 0; j < 10; j++)
            if (m[j] == 4)//Колличество одинаковых цифр.
            {
                k++;
                break;
            }
                
    }
    cout << k;
}
_Ivana
2189 / 1394 / 124
Регистрация: 01.03.2013
Сообщений: 4,151
Записей в блоге: 2
06.09.2014, 20:19     Cколько раз встречаются числа с 4 одинаковыми цифрами #3
Судя по диапазонам счетчика цикла, незначащие нули отбрасываются в обоих вариантах, однако ответы получаются разные
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
06.09.2014, 20:22     Cколько раз встречаются числа с 4 одинаковыми цифрами #4
Подсткажите пожалуйста, можно ли эту программу как-то упростить или написать иначе?
Ну, если нигде не накосячил, то как-то так:
C++
1
2
3
4
5
6
7
8
9
int factorial(int n){return !n?1:n*factorial(n-1);}
int func(int n)
{
    return factorial(6)/(factorial(n)*factorial(6-n))*10*pow(9,6-n);
}
int main()
{
    cout<<(func(4)+func(5)+10)*9/10<<endl;
}
Дополнить учебником комбинаторики для объяснения преподавателю "как эта хреновина работает".
K0nstantine
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 5
08.09.2014, 14:27     Cколько раз встречаются числа с 4 одинаковыми цифрами #5
При N>M/2 работает верно, иначе возможны ошибки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <iostream>
using namespace std;
 
#define M 6
#define N 4
__int64 f(int i)
{
    return (i ? i*f(i - 1) : 1);
}
int main()
{
    __int64 k = f(M) / f(N) / f(M-N);
    for (int i = 0; i < M - N + 1; i++)
        k *= 9;
    cout << k << endl;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.09.2014, 16:12     Cколько раз встречаются числа с 4 одинаковыми цифрами #6
Цитата Сообщение от Renji Посмотреть сообщение
как эта хреновина работает
А можно хотя бы немного расжевать? Очень интересно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 21:30     Cколько раз встречаются числа с 4 одинаковыми цифрами
Еще ссылки по теме:

Из заданной символьной строки выбрать те символы ,которык встречаются в ней только один раз,в том порядке, в котором они встречаются в тексте и в том C++
Найти количество четырехзначных чисел с тремя одинаковыми цифрами C++
C++ Определить все ли числа натурального числа N, представленного в 9ричной системе счислений являются одинаковыми

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

Или воспользуйтесь поиском по форуму:
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
08.09.2014, 21:30     Cколько раз встречаются числа с 4 одинаковыми цифрами #7
А можно хотя бы немного расжевать? Очень интересно.
Есть шестизначное число состоящее из шести разрядов a1, a2 ... a6. Нужно выбрать четыре разряда в которых будут стоять одинаковые цифры N. Первый разряд - любой из шести. Второй - любой из пяти оставшихся. И так далее. Всего - 6*5*4*3 вариантов выбора четырех разрядов из шести. Или 6!/(6-4)! (! - факториал).

Последовательность в которой были выбраны разряды никакой роли не играет ("единица будет первой и второй"="единица будет второй и первой"). Поэтому, число вариантов сокращается в 4! раза (число способов перетасовать четыре предмета/разряда) и становится равным 6!/((6-4)!*4!).

Ну и наконец, остались два незаполненных разряда. Их можно заполнить любыми цифрами кроме N (иначе цифр N будет не четыре, а пять). То есть, девять возможных цифр, 9*9 вариантов. Теперь, складываем вместе - десять вариантов N, 6!/((6-4)!*4!) вариантов распихать эти N по числу и 9*9 вариантов заполнить оставшиеся разряды. Итого - 6!/((6-4)!*4!)*10*9*9 вариантов. Аналогичные расчеты делаются для случая когда цифр N должно быть не четыре, а пять. Именно это и считает функция func.

Завершающий штрих - полученное число не должно начинаться с нуля. Значит, каждую десятую комбинацию нужно отбросить. И func(4)+func(5)+func(6) умножается на 9/10.
Yandex
Объявления
08.09.2014, 21:30     Cколько раз встречаются числа с 4 одинаковыми цифрами
Ответ Создать тему
Опции темы

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