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

Подсчитать общее количество «счастливых» билетов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрицы: LU – разложение http://www.cyberforum.ru/cpp-beginners/thread561140.html
Сделана программа по заданию: Решить систему линейных алгебраических уравнений Ax=b методом LU – разложения (предварительно изменив порядок записи уравнений); Помогите, пожалуйста вывести в ответе матрицы L и U. #include "stdio.h" #include "conio.h" #include "iostream.h" int const N = 4; double a = { {25, 2, -2, 1}, {0, 17.3, 3, 0.9},
C++ Матрицы: получить новую матрицу путем умножения всех элементов на... Решите пожалуиста!!!Получить новую матрицу путем умножения всех элементов данной матрицы на ее найбольший по модулю элемент!Без iostream только! http://www.cyberforum.ru/cpp-beginners/thread561131.html
C++ правильное, рабочее описание цикла..
задача такая найти считанное слово в текстовом файле а после успешного нахождения, перед словом либо после выполнить перенос строки, найти он должен не один раз это слово, а столько раз сколько встречаеться в тексте...в файле ниже мой нынешний исходник
Проверка данных из файла C++
Добрый день, хотел бы спросить следующее: float read (float*ia,string f) { char ch; int i; ifstream file; file.open(f); if ( file.is_open()) {
C++ Матрицы: найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент http://www.cyberforum.ru/cpp-beginners/thread561071.html
помогите, пжл: 1)Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. 2)Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент. Добавлено через 20 часов 3 минуты помогите, плиз, очень нужно.
C++ Массив: вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами. помогите, плиз: в одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального элемента массива; 2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные. подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
29.04.2012, 01:21     Подсчитать общее количество «счастливых» билетов
Вот чуть более хитрый алгоритм. В нем в 1000 раз меньше итераций (впрочем, этого можно и в предложенных алгоритмах достигнуть). Но такой алгоритм вроде по проще будет:

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
#include <iostream>
 
int main()
{
  // Для начала нужно посчитать количество одинаковых сумм для первой 
  // половины шестизнаяного числа. Т.е. от 0 до 999;
  // Максимально возможная сумма из трех цифр
  const unsigned maxSumm = 9 + 9 + 9;
 
  // Т.е. всего возможно 27 различных сумм плюс нулевая сумма, которую потом
  // не будем учитывать.
  // Итого нужен массив на 27 + 1 ячеек.
  unsigned summs[maxSumm + 1] = {0};
 
  // Цикл крутится по рязрядам. Сумма рязрядов i + j + k будет иднексом для ячейки.
  // Мы будет обращаться к этой ячейке и увеличивать ее на еденицу. Т.о. мы
  // опредим частоту определенной суммы (индекс ячейки равен сумме разрядов, значение
  // в ячейке - как часто она встречалась).
  for (int i = 0; i < 10; ++i)
  {
    for (int j = 0; j < 10; ++j)
    {
      for (int k = 0; k < 10; ++k)
      {
        ++summs[i + j + k];
      }
    }
  }
 
  // Вот теперь в массиве у нас есть частота различных сумм. Остается сложить квадраты
  // этих частот. Первую ячейку (с индексом 0) мы пропускаем, потому что в ней сумма
  // трех нулей, а нулевого билета не бывает.
  unsigned happyTickets = 0;
  for (int i = 1; i < maxSumm; ++i)
  {
    happyTickets += summs[i] * summs[i];
  }
 
  std::cout << "Happy tickets count = " << happyTickets << std::endl;
 
  return 0;
}
 
Текущее время: 02:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru