Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 29.05.2018
Сообщений: 4
1

Проверить верно ли, что заданное число равно сумме квадратов двух целых чисел

29.05.2018, 09:30. Показов 2472. Ответов 11
Метки нет (Все метки)

Приводится число натуральных N. Если он равен сумме квадратов двух целых чисел x и y, то N = x2 + y2, где x, y - функция, определяющая числа.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2018, 09:30
Ответы с готовыми решениями:

Проверить, равно ли число Sum сумме целых чисел, являющихся вершинами дерева TreeOfInteger
3. Определите отношение sum_tree(+TreeOfInteger, -Sum), выполненное, если число Sum равно сумме...

Дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число
дан массив целых чисел. Верно ли, что сумма квадратов элементов массива есть пятизначное число.

Верно ли, что число N- совершенное, то есть равно сумме своих делителей, меньших его самого
"Напишите логическую функцию, которая определяет, верно ли, что число N- совершенное, то есть равно...

Проверить верно ли, что заданное число простое
1. Дано целое число N (> 1). Если оно простое, то вывести сообщение: «Число N простое», иначе...

11
1487 / 951 / 811
Регистрация: 30.04.2016
Сообщений: 3,315
07.07.2018, 18:52 2
Kamila0715, здравствуйте! Вот решение, если я все правильно понял:

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
#include <bits/stdc++.h>
 
    using namespace std;
 
int f(int x, int y) {
    return x * x + y * y;
}
 
int main() {
    int n, x, y;
    cout << "Enter a number:\n";
    cout << "n = ";
    cin >> n;
    cout << "Enter two more numbers:\n";
    cout << "x = ";
    cin >> x;
    cout << "y = ";
    cin >> y;
    cout << "Target info:\n";
    if (n == f(x, y)) {
        cout << "Yes, " << n << " is equal " << x << "^2 + " << y << "^2\n";
    } else {
        cout << "No, " << n << " is NOT equal " << x << "^2 + " << y << "^2\n";
    }
    system("pause");
    return 0;
}
0
397 / 249 / 50
Регистрация: 08.10.2015
Сообщений: 1,086
07.07.2018, 19:51 3
Все верно, но подозреваю, что это не то, что от Вас требовалось. Мне кажется, что нужно выяснить является ли данное целое число суммой квадратов 2-х целых чисел? И найти эти числа. Т.е. вводить надо только одно число!
Но может быть я и не прав. Формулировка задания не совсем четкая.
0
1487 / 951 / 811
Регистрация: 30.04.2016
Сообщений: 3,315
07.07.2018, 20:37 4
Цитата Сообщение от САлександр Посмотреть сообщение
Все верно, но подозреваю, что это не то, что от Вас требовалось.
Здравствуйте! Я тоже думал об этом, но в силу того, что был занят другой задачей, поленился обработать этот вариант. Вот еще код, на всякий случай:

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
#include <bits/stdc++.h>
 
    using namespace std;
 
int f(int x, int y) {
    return x * x + y * y;
}
 
int main() {
    int n, x, y;
    bool flag = false;
    cout << "Enter a number:\n";
    cout << "n = ";
    cin >> n;
    cout << "Target info:\n";
    for (int x = 0; x <= n; x++) {
        for (int y = 0; y <= n; y++) {
            if (n == f(x, y)) {
                cout << x * x << " + " << y * y << " = " << n << "\n";
                flag = true;
            }
        }
    }
    if (flag) {
        cout << "Yes!\n";
    } else {
        cout << "No!\n";
    }
    system("pause");
    return 0;
}
P.S. Но это решение в лоб и не самое оптимальное.
0
397 / 249 / 50
Регистрация: 08.10.2015
Сообщений: 1,086
07.07.2018, 21:56 5
Нормальное у Вас решение. Я чуть изменил - убрал в цикле x,y=0, более понятный вывод, ввел корень из n, это существенно для больших n.

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
int main()  
{
 int n, x, y, x1;
 bool flag = false;
 
  cout << "Enter a number:\n";
  cout << "n = ";
  cin >> n;
  cout << "Target info:\n";
  x1=sqrt(n);
  for(x = 1; x <= x1; x++)
     for(y = 1; y <= x1; y++)
        if (n == f1(x,y))
          {
           cout << x<<"^2" " + " << y<<"^2" " = " << n << "\n";
           flag = true;
          }
  if (flag)
  cout << "Yes!\n";
     else  cout << "No!\n";
 
  system("pause");
  return 0;
}
0
7244 / 4900 / 2821
Регистрация: 18.12.2017
Сообщений: 15,384
08.07.2018, 02:05 6
Цитата Сообщение от САлександр Посмотреть сообщение
убрал в цикле x,y=0,
и зачем убрал ? чтобы из рабочей программы сделать непонятно что ?
0
Диссидент
Эксперт C
26348 / 16355 / 3557
Регистрация: 24.12.2010
Сообщений: 36,210
08.07.2018, 10:50 7
Цитата Сообщение от САлександр Посмотреть сообщение
убрал в цикле x,y=0
Я слышал, что 0 - тоже целое число
Замечания "вредного оптимизатора"
1. a + b = b + a
2. Если уж нашли представление, совершенно незачем крутить цикл дальше
C++
1
2
3
4
5
6
7
8
9
10
for(x=0; (x2=x*x)<=N; x++) {
  for(y=x; (y2=y*y) <= N - x2; y++)
    if (x2+y2==N) {
       flag=true;
       break;
    }
  if (flag) break;
}
if (flag)  cout << "Yes!\n";
else  cout << "No!\n";
0
397 / 249 / 50
Регистрация: 08.10.2015
Сообщений: 1,086
08.07.2018, 16:28 8
Байт
0 можно и вернуть, но это особый случай, когда N является квадратом, а второе число 0.
Но вот насчет прекращения поиска - просто интересно найти все варианты, и их бывает много. Для полного решения задачи надо только "убрать" решения вида b+a, если уже есть решение a+b.
0
Диссидент
Эксперт C
26348 / 16355 / 3557
Регистрация: 24.12.2010
Сообщений: 36,210
08.07.2018, 22:12 9
Цитата Сообщение от САлександр Посмотреть сообщение
Но вот насчет прекращения поиска - просто интересно найти все варианты, и их бывает много
Ну что ж. Вы просто решаете другую задачу. Имеете полное право. Но об этом может быть следовало сообщить остальным участникам?
0
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
08.07.2018, 22:25 10
вроде было что-то такое на кодварс когда-то.
решал так:

C++
1
2
3
4
bool is_square(int x) {
    auto root = ::sqrt(x);
    return x == root*root;
}
0
Диссидент
Эксперт C
26348 / 16355 / 3557
Регистрация: 24.12.2010
Сообщений: 36,210
08.07.2018, 22:33 11
Babysitter, это определение - является ли число полным квадратом. К поставленной задаче если и имеет какое-то отношение, то очень отдаленное.
1
243 / 137 / 53
Регистрация: 23.11.2015
Сообщений: 394
08.07.2018, 22:56 12
Байт, как обычно начал отвечать не прочитав условие. действительно, абсолютно не по теме.

Добавлено через 21 минуту
а если попробовать использовать эту идею?

C++
1
2
3
4
5
6
7
8
bool is_square_sum(int x) {
    for (int i = 0; i < x/2 + 1; ++i) {
        if (is_square(i) && is_square(x - i)) {
            return true;
        }
    }
    return false;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2018, 22:56

Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно сумме двух предыдущих. Состави
Задание Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно...

Число из большого количества цифр равно сумме двух чисел
Здравствуйте! Помогите пожалуйста с задачкой (очень сложная):help:: Вводится число A из n цифр...

Реализуйте:может ли заданное целое число быть представлено в виде суммы квадратов двух целых
/*Реализуйте метод, проверяющий, может ли заданное целое число быть представлено в виде суммы...

Заданное натуральное число M представить в виде суммы квадратов двух натуральных чисел.
Заданное натуральное число M представить в виде суммы квадратов двух натуральных чисел. Написать...

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

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


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

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

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