Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249

Просуммировать количество точек в наборе домино, где количество точек на каждом конце может быть от 1 до n

11.11.2014, 11:10. Показов 4366. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Посмотрев на ряд костяшек, расположенный в лексикографическом порядке, видна формула этой суммы: 2*n*сумма(от 1 до n):
Code
1
2
1 1 1 2 2 2 3 3 3
1 2 3 1 2 3 1 2 3
Однако программа не проходит уже второй тест (тесты неизвестны):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int sum(int n)
{
    return (n+1)*(n/2) + (n%2 == 1? (n+1)/2 : 0);
}
 
int main()
{
    int n;
    cin >> n;
    cout << 2*n*sum(n);
    return 0;
}
В чем дело?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2014, 11:10
Ответы с готовыми решениями:

Найти количество точек на всех костяшках домино
Прикладываю фото с задачей. Заранее спасибо! Необходимо сделать на Pascal.

Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек , лежащих внутри и вне m-угольника , минимально различа
Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек , лежащих внутри и вне m-угольника ,...

Посчитать количество точек, что находятся в каждом из треугольников
Дана случайное множество точек и диагонали экрана. Посчитать количество точек, что находятся в каждом из треугольников, получившийся на...

25
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
11.11.2014, 16:12
ИМХО в наборе не должно быть повторений:
Code
1
2
1 1 1 2 2 3
1 2 3 2 3 3
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
11.11.2014, 16:16  [ТС]
alexcoder, забыла пример из задания: при n = 2 сумма 12, так что те повторения есть
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
11.11.2014, 16:32
C++
1
2
3
4
int s=0;
for(int i=1;i<=n;i++)
   for(int j=i;j<=n;j++)
      s+=(i+j)
не проверял
пардон, увидел последнее сообщение позже

Добавлено через 14 минут
а если через формулу (1+n)*n^2 ?
Выражено через прогрессию.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,643
Записей в блоге: 6
11.11.2014, 16:45
Может я не совсем понял задачу...
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int sum(int n) {
    return (n+1)*n*n;
}
int main() {
    int n;
    std::cin >> n;
    std::cout << sum(n);
    return 0;
}
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
11.11.2014, 18:22  [ТС]
Формула (n+1)*n*n не верна - посчитайте сами.
При n = 3 сумма равна 36, а по этой формуле 90.
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
11.11.2014, 18:43
Цитата Сообщение от Керра Посмотреть сообщение
Формула (n+1)*n*n не верна - посчитайте сами.
При n = 3 сумма равна 36, а по этой формуле 90.
4*3*3=36
для n=2:
3*2*2=12
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
12.11.2014, 15:42  [ТС]
блин. туплю.

Добавлено через 20 часов 57 минут
С этой формулой также срывается на 2м тесте.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.11.2014, 16:09
Керра, попробуй n^3 + n^2


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main(){
 
    long long n;
    cin >> n;
    long long ans = n * n * n + n * n;
 
    cout << ans << endl;
 
    return 0;
}

упс там выше такую же предлагали. ну в лонгах надо бы попробовать, а у тебя инты.
0
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
12.11.2014, 16:12  [ТС]
SlavaSSU, то же самое
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.11.2014, 16:16
Керра, дай ссылку на задачу.
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.11.2014, 16:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int n;
    std::cin >> n;
    long long int result = 0;
    for(long long int i = 0; i <= n; ++i)
        result += (i + n) * (n - i + 1) / 2 + (n - i + 1) * i;
    std::cout << result;
    return 0;
}
Можно вот так, не заморачиваясь.
1
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
12.11.2014, 16:36  [ТС]
Dani, прошло. хотя я не поняла формулу.
SlavaSSU, acm.timus.ru, задача 1502. ссылки на тимус некорректно отображаются
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.11.2014, 16:41
Керра, так там задача другая. там можно 0 ставить и еще 2-5 5-2 одинаковые.

т.е. ответ на 1 тест(n == 2) 12 т.к.

0 0
0 1
0 2
1 1
1 2
2 2
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.11.2014, 16:42
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

Цитата Сообщение от Керра Посмотреть сообщение
прошло. хотя я не поняла формулу.
Все изи на самом деле.
Чтобы не было повторений в костяшках, будем рассматривать только костяшки вида (a; b), где a <= b (a, b - точки на костяшках). Рассматриваем набор костяшек, где a = i. Количество таких костяшек будет n - a + 1 (не забывай, что a <= b). Теперь осталось найти сумму точек на них: найдем сумму верхней половины (точек a) - это будет (n - a + 1) * a = (n - i + 1) * i. Сумма на второй половине находится тоже несложно: это арифметическая прогрессия - последовательные числа от a до b. По формуле суммы арифметической прогрессии
(A1 + An) / 2 * n получаем (a + b) * (n - a + 1) / 2 = (i + n) * (n - i + 1) / 2. В сумме и получается формула из кода.

Если чуть дольше подумать, то наверно можно убрать цикл и получить одну формулу.
1
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
12.11.2014, 16:43  [ТС]
значит не поняла задачу(
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,643
Записей в блоге: 6
12.11.2014, 16:51
Цитата Сообщение от Dani Посмотреть сообщение
Все изи на самом деле.
Чтобы не было повторений в костяшках, будем рассматривать только костяшки вида (a; b), где a <= b (a, b - точки на костяшках). Рассматриваем набор костяшек, где a = i. Количество таких костяшек будет n - a + 1 (не забывай, что a <= b). Теперь осталось найти сумму точек на них: найдем сумму верхней половины (точек a) - это будет (n - a + 1) * a = (n - i + 1) * i. Сумма на второй половине находится тоже несложно: это арифметическая прогрессия - последовательные числа от a до b. По формуле суммы арифметической прогрессии
(A1 + An) / 2 * n получаем (a + b) * (n - a + 1) / 2 = (i + n) * (n - i + 1) / 2. В сумме и получается формула из кода.
Все гораздо проще. Cтоит заметить, что числа из верхнего ряда это перестановка тех же чисел из нижнего значит первый множитель 2. Далее количество повторений каждой цифры в верхнем поле равно количеству цифр т. е. n.
1 1 1 1 ... 1
1 2 3 4 ... n
Теперь осталось найти сумму цифр от 1 до n это n * (n + 1) / 2. Умножая все получим n * n * (n + 1)
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
12.11.2014, 16:55
чуть поменьше формул

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main(){
    int n;
    cin >> n;
 
    long long ans = 0;
    for(int i = 1; i <= n; i++)
    {
        ans += (n + 2) * i;
    }
 
    cout << ans << endl;
 
    return 0;
}
1
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
12.11.2014, 16:58
Цитата Сообщение от Ilot Посмотреть сообщение
Все гораздо проще.
Лично мне и так и так изи
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,643
Записей в блоге: 6
13.11.2014, 08:47
Цитата Сообщение от SlavaSSU Посмотреть сообщение
чуть поменьше формул
Да, только программа малоэффективная и к тому же выдает не правильный результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2014, 08:47
Помогаю со студенческими работами здесь

В заданном множестве точек плоскости найти количество точек в каждой из четвертей
В заданном множестве точек плоскости найти количество точек в каждой из четвертей

Задано N точек на плоскости: подсчитать количество точек попавших в заданную область
1. Записать логическое выражение соответствующие заданной области истинности 2. Составить программу для: а) подсчета количества...

В заданном множестве точек плоскости найти количество точек в каждой из четвертей
В заданном множестве точек плоскости найти количество точек в каждой из четвертей. Знаете я не могу понять - а как задано это...

Среди трех точек с координатами (x1,y1), (x2,y2), (x3,y3) определить количество точек, лежащих в третьей четверти
Среди трех точек с координатами (x1,y1), (x2,y2), (x3,y3) определить количество точек, лежащих в третьей четверти

Дано n точек, определить какое максимальное количество точек лежит на одной прямой
Дано n точек, определить какое максимальное количество точек лежит на одной прямой.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru