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

Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу - C++

Восстановить пароль Регистрация
 
Kravtsov_18
Заблокирован
21.01.2016, 00:08     Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу #1
Здравствуйте!
Пожалуйста, помогите.
Неизвестный автор пишет программу Специальный триплет Пифагорейский
Пифагорейский триплет это набор трех чисел, a < b < c, для которых,
a^2 + b^2 = c^2
Например, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.
Есть только один Пифагорейский триплет для которого a + b + c = 1000.
Найти произведение abc
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 <iostream>
#include <math.h>
 
bool is_triplet(int a, int b, int c);
 
int main()
{
    for (int i=1; i<=998; i++)
    {
        for (int j=i+1; j<=999; j++)
        {
            for (int k=j+1; k<=1000; k++)
            {
                if (is_triplet(i,j,k))
                    if (i+j+k == 1000)
                    std::cout << i*j*k << std::endl;
            }
        }
    }
    return 0;
}
 
bool is_triplet(int a, int b, int c)
{    
    if ((pow(a,2) + pow(b,2)) == pow(c,2))
        return true;
    return false;
}
Программа находит: 1875000
А как сделать, чтобы программа сразу показывала значения: a; b; c?

Пришлось самому ломать голову, не зная — кода.

x + y + (x^2 + y^2)^0.5 = 1000 && x*y*(x^2 + y^2)^0.5 = 31875000 http://m.wolframalpha.com/input/?i=x+%2B+y+%2B+%28x^2+%2B+y^2%29^0.5+%3D+1000+%26%26+x*y*%28x^2+%2B+y^2%29^0.5+%3D+31875000&x=6&y=5

x = 200, y = 375
y = 200, x = 375
(200^2 + 375^2)^0.5 = 425

Добавлено через 4 часа 48 минут
Цитата Сообщение от Kravtsov_18 Посмотреть сообщение
Программа находит: 31875000
А как сделать, чтобы программа сразу показывала значения: a; b; c?
Неужели на форуме никто не знает?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2016, 00:08     Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу
Посмотрите здесь:

C++ Найти все элементы массива, сумма которых равна заданному числу
C++ Получить все четырехзначные числа, сумма цифр которых равна заданному числу n
Указать индексы и напечатать те элементы целочисленного массива X, сумма цифр которых равна заданному числу M C++
Одномерный массив чисел. Найти индексы элементов, сумма значений которых равна заданному числу C++
C++ Среди всех N значных чисел указать те, сумма цифр которых равна заданному числу К
Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу C++
Подсчитать количество четырёхзначных чисел, сумма цифр которых равна заданному числу C++
C++ В последовательности целых чисел найти пары, сумма которых равна заданному числу

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2185 / 1868 / 187
Регистрация: 03.07.2012
Сообщений: 6,640
Записей в блоге: 1
21.01.2016, 00:39     Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В чем проблема-то? Почему "не зная кода" и что мешает вывести числа:
C++
1
std::cout << i*j*k << " "<<i<<" "<<j<<" "<<k<<std::endl;
И почему произведение то 1875000, то 31875000 ?

Добавлено через 3 минуты
Я уж не говорю о такой чуши, как
C++
1
2
3
4
5
6
  
        for (int k=j+1; k<=1000; k++)
        {
            if (is_triplet(i,j,k))
  вместо 
if (is_triplet(i,j,1000-i-j));
Kravtsov_18
Заблокирован
21.01.2016, 01:01  [ТС]     Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу #3
Как сам понял, автор кода некий Ашот. Сейчас у меня всё хорошо. Проверил. Код ниже
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 <iostream>
#include <math.h>
 
bool is_triplet(int a, int b, int c);
 
int main()
{
    for (int i=1; i<=998; i++)
    {
        for (int j=i+1; j<=999; j++)
        {
            for (int k=j+1; k<=1000; k++)
            {
                if (is_triplet(i,j,k))
                    if (i+j+k == 1000)
                    std::cout << i*j*k << " "<<i<<" "<<j<<" "<<k<<std::endl;
            }
        }
    }
    return 0;
}
 
bool is_triplet(int a, int b, int c)
{    
   if ((pow(a,2) + pow(b,2)) == pow(c,2))
        return true;
    return false;
}
31875000 200 375 425
Yandex
Объявления
21.01.2016, 01:01     Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу
Ответ Создать тему
Опции темы

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