Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
fortison
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 17
1

Найти количество счастливых билетов учитывая скорость выполнения программы

17.02.2016, 21:01. Просмотров 466. Ответов 19
Метки нет (Все метки)

Найти количество счастливых билетов учитывая скорость выполнения программы,счастливый билет имеет вид a+b+c=d+e+f.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2016, 21:01
Ответы с готовыми решениями:

Найти количество всевозможных шестизначных счастливых билетов
Найти количество всевозможных шестизначных счастливых билетов (для простого...

Найти количество счастливых билетов с шестизначными номерами
Построить алгоритм для нахождения количества счастливых билетов с шестизначными...

Найти количество счастливых билетов с 6-значными номерами
Найти количество счастливых билетов в серии ABC, то есть с 6 - значными...

Определить количество счастливых билетов
Имеется часть катушки с автобусными билетами. Номер билета 6-ти значный....

Подсчитать общее количество «счастливых» билетов
Подсчитать общее количество «счастливых» билетов. Билет имеет шестизначный...

19
Байт
Эксперт C
18925 / 12143 / 2533
Регистрация: 24.12.2010
Сообщений: 24,721
17.02.2016, 21:54 2
Цитата Сообщение от fortison Посмотреть сообщение
имеет вид
Я правильно понял, что сумма первых 3-х цифр = сумме трех последних?
Задача имеет аналитическое решение. В виде формулы.
Цитата Сообщение от fortison Посмотреть сообщение
учитывая скорость выполнения
В этом случае скорость = бесконечности (время решения = 0)
0
fortison
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 17
18.02.2016, 12:56  [ТС] 3
Вы все правильно поняли.Каждая цифра от 0 до 9.В задании так написано,я сам не понимаю причем тут время выполнения.Наверное про время можно подзабыть.
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
18.02.2016, 13:09 4
fortison,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    string str = to_string(n);
    int sum1,sum2;
    sum1 = int(str[0] + str[1] + str[2]);
    sum2 = int(str[3] + str[4] + str[5]);
    if(sum1 == sum2) cout << "It's lucky ticket!";
    else cout << "It's unlucky ticket!";
    cout << endl;
}
0
fortison
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 17
18.02.2016, 13:37  [ТС] 5
makfak, мне надо определить количество этих билетов,каждая цифра от 0 до 9.
0
Байт
Эксперт C
18925 / 12143 / 2533
Регистрация: 24.12.2010
Сообщений: 24,721
18.02.2016, 13:49 6
Рассмотрим комбинации из трех цифр.
Суммы 0 и 27 дают по одной комбинация. Количество счастливых билетов = 2*1*1 = 2
Суммы 1 и 26 по 3 комбинации КСБ = 2*3*3 = 18
Суммы 2 и 25 по 6 комбинации КСБ = 2*6*6 = 72
...
Суммы 13 и 14 ....
И все это сложить
1
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
18.02.2016, 14:06 7
3 и 24 по 10 комб КСБ = 2*10*10 = 200
4 и 23 по 15 комб.КСБ = 2*15*15 = 450
... А вот есть ли общая формула? До 9-ти точно есть Ck+22. А вот дальше начинает работать ограничение <= 9
0
fortison
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 17
18.02.2016, 14:12  [ТС] 8
Проверьте пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{
    int count=0;
    for(int i = 100000;i<999999;i++){
    string str = to_string(i);
    int sum1,sum2;
    sum1 = int(str[0] + str[1] + str[2]);
    sum2 = int(str[3] + str[4] + str[5]);
    if(sum1 == sum2) 
    count++;
    }
    cout<< count << endl;
    system("pause");
    return 0;
}
0
Байт
Эксперт C
18925 / 12143 / 2533
Регистрация: 24.12.2010
Сообщений: 24,721
18.02.2016, 14:33 9
Цитата Сообщение от fortison Посмотреть сообщение
Проверьте
Проверять не буду. т.к. алгоритм мне совершенно не нравится.А зачем проверять такие несовершенные алгоритмы?
Если хочешь программно, то это делается так
C++
1
2
3
4
5
6
7
8
int a[28];
for(n=0; n<1000; n++) {
  k = n%10 + n/100 + (n/10)%10;
  a[k]++;
}
for(i=count=0; i<28; i++)
  count += a[i]*a[i];
cout << count << endl;
1
fortison
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 17
18.02.2016, 14:37  [ТС] 10
Байт, я знаю что алгоритм не оч.Но все же он работает правильно?
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
18.02.2016, 15:22 11
C++
1
2
3
4
5
6
#include <iostream>
using namespace std;
int main()
{
  cout << 55252;
}
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
18.02.2016, 15:37 12
SpBerkut, 50411*
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
18.02.2016, 16:07 13
Цитата Сообщение от makfak Посмотреть сообщение
SpBerkut, 50411*
С чего это? Номер 000001 — это тоже номер.
0
gogaloh
16 / 22 / 0
Регистрация: 14.03.2015
Сообщений: 612
18.02.2016, 17:07 14
Вот моя попытка,
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    long int i;
    int count = 0;
    int w, z;
    for (i = 1000; i <= 999999; i++)
    {
        w = i / 1000;
        if (w < 10)
            w = w % 10;
        if (w >= 10 && w < 100)
            w = (w / 10) + (w % 10);
        if (w >= 100)
            w = (w / 100) + ((w % 100) / 10) + (w % 10);
        z = i % 1000;
        if (z < 10)
            z = z % 10;
        if (z >= 10 && z < 100)
            z = (z / 10) + (z % 10);
        if (z >= 100)
            z = (z / 100) + ((z % 100) / 10) + (z % 10);
        if (w == z)
            count++;
    }
    cout << count << endl << endl;
 
    system("pause");
    return 0;
}
0
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
18.02.2016, 17:45 15
Цитата Сообщение от gogaloh Посмотреть сообщение
Вот моя попытка,
Не самая удачная, однако...

Добавлено через 3 минуты
Цитата Сообщение от makfak Посмотреть сообщение
50411
Нечетным количество счастливых билетов быть вообще не может
0
gogaloh
16 / 22 / 0
Регистрация: 14.03.2015
Сообщений: 612
18.02.2016, 17:46 16
8-BITOV, почту за честь созерцать элегантное решение.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26313 / 17646 / 6995
Регистрация: 22.10.2011
Сообщений: 31,061
Записей в блоге: 6
18.02.2016, 17:50 17
Цитата Сообщение от gogaloh Посмотреть сообщение
почту за честь созерцать элегантное решение
Элегантные решения были описаны в журнале для школьников "Квант" (с 1988 по 1990 годы, не помню точно, но поиск по их архиву выведет запросто на нужные номера). А все, что предлагается сейчас - это дуболомный перебор всех номеров и подсчет. Типа, "компьютер железный - пусть считает, мощности выросли, думать не нужно"
1
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
18.02.2016, 17:56 18
Цитата Сообщение от gogaloh Посмотреть сообщение
почту за честь созерцать элегантное решение.
А чем не нравится решение в посте 9 ?
0
gogaloh
16 / 22 / 0
Регистрация: 14.03.2015
Сообщений: 612
18.02.2016, 19:26 19
8-BITOV, вот еще вариант, но выдает не верный ответ.
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x = 0;
    int i, a, b, c;
    for (i = 0; i < 28; i++)
    {
        for (a = 0; a <= 9; a++)
        {
            for (b = 0; b <= 9; b++)
            {
                for (c = 0; c <= 9; c++)
                {
                    if (i ==( a + b + c))
                        x++;
                }
            }
        }
 
    }
    cout << x << endl << endl;
 
    system("pause");
    return 0;
}
Выдает ответ 1000.
0
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
18.02.2016, 20:37 20
Цитата Сообщение от gogaloh Посмотреть сообщение
Выдает ответ 1000.
Как код напишешь - так он и считает...
0
18.02.2016, 20:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 20:37

Составить программу, определяющую количество счастливых билетов на катушке
6.3.2. Помогите, пожалуйста, решить задачу в С++ с помощью функций. ...

Вывести на экран количество и номера (в несколько столбиков) всех счастливых билетов в заданном диапазоне
Всем привет. Помогите пожалуйста с решением. Нужен код на C++. Сама задача:...

Подсчитать количество "счастливых" шестизначных билетов в рулоне и вывести их номера на экран
Напишите программу, которая подсчитывает количество &quot;счастливых&quot; билетов в...


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

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

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