0 / 0 / 1
Регистрация: 11.06.2017
Сообщений: 11
1

Выяснить, можно ли представить данное число в виде суммы трех квадратов натуральных чисел

11.06.2017, 19:23. Показов 3682. Ответов 3
Метки нет (Все метки)

Дано натуральное число n. Можно ли представить его в виде суммы трех квадратов натуральных чисел? Если можно, то указать тройку x, y, z таких натуральных чисел, что n=x2+y2+z2 Помогите написать задачу на С++
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2017, 19:23
Ответы с готовыми решениями:

Определить, можно ли число представить в виде суммы квадратов трех натуральных чисел
Дано натуральные число n . Можно ли представить его в виде суммы трех квадратов натуральных чисел?...

Дано натуральное число n. Можно ли представить его в виде суммы трех квадратов натуральных чисел?
Подскажите как правильно составить программу к этим задачам: 1.Дано натуральное число n. Можно ли...

Можно ли представить данное число в виде произведения трех последовательных натуральных чисел
Помогите пожалуйста решить задачи на С++ 2) (Функция) Дано натуральное число n. Выяснить, можно...

Определить, можно ли представить число в виде суммы двух квадратов натуральных чисел
Дано натуральное число n.Определить,можно ли представить его в виде суммы двух квадратов...

3
Software Developer
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,318
11.06.2017, 20:46 2
Лучший ответ Сообщение было отмечено kiri11ka как решение

Решение

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
#include <iostream>
#include <cmath>
using namespace std;
 
const int MAX_ARRAY = 100;
int array [MAX_ARRAY];
 
void init_array ()
{
    for (int i = 1; i < MAX_ARRAY; i ++)
         array [i-1] = (i*i);
}
 
bool func (int n)
{
    for (int i1 = 0; i1 < MAX_ARRAY-1; i1 ++)
         for (int i2 = 0; i2 < MAX_ARRAY-1; i2 ++)
              for (int i3 = 0; i3 < MAX_ARRAY-1; i3 ++)
                   if (array [i1] + array [i2] + array [i3] == n)
                   {
                        cout << sqrt (array [i1]) << "^2 + " << sqrt (array [i2]) << "^2 + " << sqrt (array [i3]) << "^2 = " << n;
                        return 1;
                   }
    return 0;
}
 
int main (int argc, char *argv [])
{
    init_array ();
    // 9 + 16 + 25 = 50
    // 4 + 100 + 600 = 704
    int n = 704;
    if (!func (n))
         cout << "Error!";
    getchar ();
    return 0;
}
1
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,939
Записей в блоге: 27
12.06.2017, 04:06 3
Для произвольного числа слагаемых
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int N=10000;
int a[N];
 
bool f(int n, int k, int j) {  
    if (k==0) return n==0; else if (n<a[j]) return false;
    for (int i=j; i<N; i++) {
        if (f(n-a[i], k-1, i)) {
            cout << (k==1 ? "" : " + ") << i << "^2";
            return true;
        }
    }
    return false;
}
 
int main() {
    for (int i=0; i<N; i++) a[i]=i*i;
    int n, k; cin >> n >> k;    
    if (f(n, k, 1)) cout << " = " << n; else cout << "no solution";
}
0
Заблокирован
12.06.2017, 22:11 4
Для произвольного числа слагаемых. Без рекурсии. Задача олимпиадная. Имеет единственное решение для больших чисел.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 int count = 3; //число слагаемых x^2
    int limit = 100; //предел вычисления x^2+x^2+x^2=30000
    int value = 12; //заданное число для поиска
 
    int *length = new int[count] {};
    for (int k = 0; k < std::ceil(std::pow(limit, count)); k++) {
        for (int i = 0; i < count; i++) {
            length[i]++;
            if (length[i] > limit || length[i] == 1) length[i] = 1;
            else break;
        }
        if (value == std::inner_product(length, length + count, length, 0, std::plus<int>(), std::multiplies<int>())) {
            for (int c = 0; c < count; c++)cout << length[c] << ((c + 1 == count) ? "^2" : "^2+");
            return 0;
        }
    }
    delete[] length;
    cout << "no solution";
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2017, 22:11
Помогаю со студенческими работами здесь

Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел?
Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел?...

Определить, можно ли представить число N в виде суммы кубов трех натуральных чисел
Определить можно ли представить заданное натуральное число N как сумму кубов каких-нибудь трех...

Даны натуральное число n. Среди чисел 1, 2, …, n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел.
Собственно само задание. 5). Даны натуральное число n. Среди чисел 1, 2, …, n найти все те,...

Даны натуральное число n. Среди чисел 1, 2, …, n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел
Даны натуральное число n. Среди чисел 1, 2, …, n найти все те, которые можно представить в виде...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru