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

Найти все трехзначные числа, в которых все цифры различны. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти самую большую цифру целого числа. http://www.cyberforum.ru/cpp-beginners/thread1054912.html
Помогите, пожалуйста, решить задачу в С++. Найти самую большую цифру целого числа.
C++ Шаблон класса Привет товарищи. Тут в общем такая история, запилил шаблонный класс реализующий очередь , который работает на чарах, а вот на целочисленных значениях не хочет, кто подскажет в чем проблема??? #include <iostream> #include <cassert> #include <conio.h> using namespace std; template<typename T> class Queue { http://www.cyberforum.ru/cpp-beginners/thread1054894.html
C++ Моделирование СМО
#include<stdio.h> // Функции потокового ввода - вывода #include<conio.h> // Формирование экракна #include<math.h> // Математические функции #include<alloc.h> // Функции по работе с динам. памятью //Прототипы функций float RND_DIG( void ); // Ф-я генерирует случ. числа void inf( void); ...
C++ Задан Массив из N и M Чисел соответственно. Получить объединенный массив, включив в него сначала элементы первого массива, а затем второго
Помогите пожалуйста набрать код в с++. Задан Массив из N и M Чисел соответственно. Получить объединенный массив, включив в него сначала элементы первого массива, а затем второго.
C++ Отсортировать массив по убыванию второй старшей цифры в записи его элементов http://www.cyberforum.ru/cpp-beginners/thread1054844.html
Помогите пожалуйста написать коды программ! "Отсортировать массив по убыванию второй старшей цифры в записи его элементов. "
C++ Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort Здравствуйте! прошу вас о помощи! помогите пожалуйста с программой! "Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort (сstdlib) (написать для нее функцию сравнения, передаваемую в качестве параметра, и заполнить таблицу строк). " подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
20.01.2014, 19:53     Найти все трехзначные числа, в которых все цифры различны.
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
#include <iostream>
#include <algorithm>
 
// последняя комбинация служит стоп-сигналом, поэтому считаем с 1
// M - система счисления, N - число цифр, val - массив цифр числа
bool stop(const int N, const int* val, const int M)
{
    for (int i=0; i < M; i++)
        if (val[i] != N - 1 - i)
            return false;
    return true;
}
 
// функция возвращает истину если все цифры в числе разные
bool unique(const int* val, const int sz)
{
    // копируем наше число во временное
    int* tmp = new int[sz];
    for (int i=0; i < sz; i++)
        tmp[i] = val[i];
    // сортируем цифры временного числа
    std::sort(tmp, tmp + sz);
    bool onlyUniqueDigits = (std::unique(tmp, tmp + sz) == tmp + sz);
    delete[] tmp;
 
    return onlyUniqueDigits;
}
 
// M - система счисления, N - число цифр, val - массив цифр числа
void increment(const int M, int* val, const int N)
{
    val[N-1]++;
    for (int i = N-1; i > 0; i--)
        if (val[i] == M)
        {
            val[i - 1]++;
            val[i] -= M;
        }
}
 
void print(const int* arr, const int sz)
{
    for (int i=0; i < sz; i++)
        std::cout << arr[i];
    std::cout << std::endl;
}
 
 
int main()
{
    const int N = 10, M = 3;
    int val[M], counter = 1;
 
    // формируем начальное число
    for (int i=0; i < M; i++)
        val[i] = i;
    std::swap(val[0], val[1]); // меняем первые две цифры
 
    // пока не достигли последней комбинации
    while (!stop(N, val, M))
    {
        // если число уникально
        if (unique(val, M))
            counter++;
            //print(val, M);
        increment(N, val, M);
    }
    std::cout << "Counter: " << counter << std::endl;
}
 
Текущее время: 00:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru