Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 27.10.2014
Сообщений: 21
1

Используя перебор значений найти все такие целые a, b, что n=3a+5b для любого натурального n>7

27.10.2014, 15:24. Показов 3388. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с задачей,пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2014, 15:24
Ответы с готовыми решениями:

С C++ в C#. Найти все целые числа X, такие что X^N mod M = Y
Даны целые числа N, M и Y. Напишите программу, которая найдёт все целые числа X в диапазоне , такие...

Найти все целые числа X в диапазоне [0, M – 1], такие что X^N mod M = Y
...Напишите программу, которая найдёт все целые числа X в диапазоне , такие что X^N mod M = Y. ...

Для заданного натурального числа n вывести все пары чисел x, y такие, что n = x^2+y^2
Нужна помощь Для заданного натурального числа n программа выводит все пары чисел x, y, такие,...

Для любого числа N найти все такие натуральные x,y, для которых выполняется заданное условие
Для любого числа N найти все такие натуральные x,y, для которых выполняется N=(x)^2 + (y)^2. Ввод...

12
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
27.10.2014, 17:22 2
gusar, а границы есть?
0
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
27.10.2014, 19:17 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int main(){
    
    int n;
    do{
        cout << "Ââåäèòå n = ";
        cin >> n;
    }while(n <= 7);
    
    for (int a = 0; a <= n / 3; ++a)
        for (int b = 0; b <= n / 5; ++b)
            if (3 * a + 5 * b == n)
                cout << "3 * " << a << " + 5 * " << b << " = " << n << endl;
            
    return 0;
}
1
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
27.10.2014, 19:21 4
Цитата Сообщение от D_in_practice Посмотреть сообщение
for (int a = 0; a <= n / 3; ++a)
Я думаю что тот факт, что в постановке задачи раздельно используются термины "целый" и "натуральный", говорит о том, что отрицательные 'a' и 'b' должны быть проверены тоже.
2
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
27.10.2014, 19:34 5
для любого натурального n>7 сбило с пути

хотя стоп, тогда нужно смотреть вообще всю числовую ось

то есть a от - 2^32 до + 2^32 и b от - 2^32 до + 2^32
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
27.10.2014, 19:39 6
D_in_practice,
если уж на то пошло то почему a начинается с - (n / 3)
пожалуйста n=15
a=-100
b=63
3*-100+5*63=-300+315=15
прав Kverter, пределы нужны

Добавлено через 1 минуту
Цитата Сообщение от D_in_practice Посмотреть сообщение
то есть a от - 2^32 до + 2^32 и b от - 2^32 до + 2^32
а целые числа int не заканчиваются

подправил уже
1
1 / 1 / 0
Регистрация: 27.10.2014
Сообщений: 21
27.10.2014, 21:52  [ТС] 7
a и b <=7
a=0;b=0
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
27.10.2014, 22:03 8
3*a+5*b=n;
5*b=n-3*a;
a=(n-3*b)/5;
C++
1
2
3
4
5
6
7
8
int a;
for(int b=0; b<=7;b++)
 {
   a=(n-3*b)/5;
   if(a>=0&& a<=7 && 3*a+5*b==n)
       cout<<a<<b; 
 
 }
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
27.10.2014, 22:57 9
Цитата Сообщение от ValeryS Посмотреть сообщение
3*a+5*b=n;
5*b=n-3*a;
a=(n-3*b)/5;
Ну по-первых, из предпоследнего уравнения следует 'b = (n - 3*a) / 5'. Почему здесь и в коде вы вдруг поменяли местами a и b - не ясно.

Во-вторых, заказчик (препод) может сказать, что вы слишком умничаете. Сказано перебором - значит самым что ни на есть хмурым полным перебором!!!111 (Только не понятно, зачем проверка на <= 7)

По уму (по математике), если вы уже знаете одну комбинацию (a0, b0), удовлетворяющую нашему уравнению, то все остальные комбинации будут записываться просто как (a0 - 5 * i, b0 + 3 * i). Все.

Я не знаю, удовлетворит ли автора и/или заказчика решение, основанное на этом простом наблюдении
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
27.10.2014, 23:00 10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
зачем проверка на <= 7)
в смысле
Цитата Сообщение от ValeryS Посмотреть сообщение
a<=7
при b=0 может большое число получится
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Заказчик (препод) может сказать, что вы слишком умничаете.
я бы посылал таких преподов
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Сказано перебором - значит самым что ни на есть хмурым полным перебором
ну "это всем известно и никому не интересно"(с) Брыль "Чародеи"
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
28.10.2014, 10:30 11
gusar, если хочешь тупым перебором то вот
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
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <climits>
 
using namespace std;
 
int main()
{
    long double n;
    int max=INT_MAX;
    int min=INT_MIN;
    cout<<"Vvedite n"<<endl;
    cin>>n;
    int a,b;
for(int a=min;a<=max;a++)
    {
    for(int b=min;b<=max;b++)
        {
            if(n==(3*a+5*b)) cout<<"a="<<a<<" b="<<b<<endl;
        }
    }
system("pause");
return 0;
}
самый тупой перебор =)
min,max определишь сам-это границы.
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
28.10.2014, 10:40 12
Цитата Сообщение от Kverter Посмотреть сообщение
если хочешь тупым перебором то вот
Хе, хе, хе... Запускать свой код пробовали?

1. Ваши циклы, в том виде, в котором они написаны, вызывают неопределенное поведение из-за арифметического переполнения. А на практике это - бесконечные циклы. Переменная типа 'int' всегда <= INT_MAX. Она никак не может стать больше чем INT_MAX.

2. Если значение переменных 'a' и 'b' может приближаться к INT_MIN и INT_MAX, то выражение '3*a+5*b' будет приводить к арифметическому переполнению и бессмысленному результату.

3. Отдельное недоумение вызывает множественное объявление переменных 'a' и 'b'. Зачем?

4. Также недоумение вызывает объявление переменной 'n' с типом 'long double'. Какой смысл, если все остальные вычисления делаются в типе 'int'?
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
28.10.2014, 12:15 13
TheCalligrapher, я все это понимаю, по этому мой первый пост был с вопросом о границах, и в примечании к коду я указал что требуется переопределить max и min. А с типом long double я натупил, признаюсь.
0
28.10.2014, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 12:15
Помогаю со студенческими работами здесь

Для заданного натурального числа n программа выводит все пары чисел x, y, такие, что n=x^2+y^2
Для заданного натурального числа n программа выводит все пары чисел x, y, такие, что n =x^2+y^2

Для любого целого числа N>7 найти все такие пары целых чисел
Для любого целого числа N&gt;7 найти все такие пары целых чисел x и y, что 3x+5y=N. var...

Для любого натурального числа А найти наименьшее натуральное число n, такое что выполняется неравенство 2^n > А
Которая для любого натурального числа а находит наименьшее натуральное число n, такое что...

Найдите все положительные целые x, такие что x4−8x+16 является полным квадратом
Помогите решить 3 задачи пожалуйста. 1)Найдите все положительные целые x, такие что x4−8x+16...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru