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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Avalan4er
3 / 3 / 0
Регистрация: 30.11.2012
Сообщений: 41
#1

Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых - C++

15.02.2014, 12:41. Просмотров 1156. Ответов 7
Метки нет (Все метки)

Заданы три натуральных числа a, b, n. Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы ( произвольного числа ) слагаемых, каждое из которых равно либо числу а, либо числу b.

Помогите пожалуйста составить алгоритм, в любом виде. Что-то не доходит до меня как это решить. Реализую я сам т.к. на двух языках нужно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 12:41     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
Посмотрите здесь:

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр C++
C++ Найти все натуральные числа, не превосходящие заданного числа
a) Найти все натуральные числа, не превосходящие К C++
C++ Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Найти все натуральные числа,не превосходящие заданного n,которые делятся на каждую из своих цифр. C++
C++ Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.
C++ Найти все натуральные числа, не превосходящие заданного значения N, которые делятся на каждую из своих цифр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
15.02.2014, 16:20     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #2
вроде работает. суть задачи вводишь три числа. и проверяешь все числа меньше n пока n=0! и запоминаешь те числа которые делятся(сумма 3+3+3=9 делится без остатка на 3) на числа a b без остатка!
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
#include <iostream>
#include <locale>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int a,b,n,g,h;
 
    cout << "Ввод чисел a,b,n" << endl;
    cout << "Введите число а" << endl;
    cin >>a;
    cout << "Введите число b" << endl;
    cin >>b;
    cout << "Введите число n" << endl;
    cin >>n;
    for (;n>0;n--){
    g=n%a;
    h=n%b;
    if (g==0) cout<< "число "<<n<< " подходит и делится на "<<a<<endl;
    if (h==0) cout<< "число "<<n<< " подходит и делится на "<<b<<endl;}
                getch();
                return 0;
}
Avalan4er
3 / 3 / 0
Регистрация: 30.11.2012
Сообщений: 41
15.02.2014, 16:55  [ТС]     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #3
Хм, ну вот например быстрый тест
n=6, a=2, b=3
5 не делится без остатка ни на 2 ни на 3, но из данных слагаемых можно составить это число, значит по условию оно подходит
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 01:53     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Да-да) я не правильно понял задачку) вот исправил) вкраце объясню как работает: вводим три числа к примеру 4,6 и 15=n задача находит минимальное из них и строит сумму т.е. 4+4+4+4+4=16>15 до тех пока сумма не будет равна n или больше его если равна то число подходит если нет тогда заменяем элементы суммы на второе число. вначале так 4+4+4+4+6>15 4+4+4+6 !=15 4+4+4+6+6>15 ... 6+6+6+6 !=15 т.е. из суммы элементов 4 и 6 не сложишь так чтоб получилось 16)вот)..ну потом так же проверяется 14..13..7 до элемента который на один больше чем большее из чисел a или b) вот решение)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <locale>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int a,b,n,g,m,c=0,c1=0,h;
 
    cout << "Ввод чисел a,b,n" << endl;
    cout << "Введите число а" << endl;
    cin >>a;
    cout << "Введите число b" << endl;
    cin >>b;
    cout << "Введите число n" << endl;
    cin >>n;
    if (a>=b) {g=b;h=a;}
    else {g=a;h=b;}
 
    for(;n>h;n--)
        {c=0;c1=0;
    for(;g>0;c1++){
        c+=g;
        if (c==n)
        {
            cout<<"чиcло "<<n<<" подходит"<<endl;
            break;
        }
        if(c>n)
            break;}
    if(c>n)
    {
        for (;c1>=0;c1--)
    {
        c=c-g;
        if (c==n)
        {
            cout<<"чиcло "<<n<<" подходит"<<endl;
            break;
        }
        c+=h;
        if (c==n)
        {
            cout<<"чиcло "<<n<<" подходит"<<endl;
            break;
        }
    }
    }}
 
                getch();
                return 0;
}
заставил поломать голову короче) если не понятно пиши)
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 01:57     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
а кстати вот результаты)Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемыхНайти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
Avalan4er
3 / 3 / 0
Регистрация: 30.11.2012
Сообщений: 41
16.02.2014, 02:12  [ТС]     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #6
Так, я завтра все пересчитаю еще раз и, надеюсь, все сойдется. Тут еще я заметил надо включать сами числа a и b в ответ, так как по идее под произвольным числом слагаемых можно понимать и 0.
tim289
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 02:15     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #7
уже как вывести ответ сам сделаешь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 02:17     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
Еще ссылки по теме:

Найти все натуральные числа от 1 до N, представимые в виде суммы кубов двух натуральных чисел C++
Найти все числа, которые можно представить в виде суммы квадратов двух натуральных чисел C++
C++ Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр C++
Найти все натуральные числа, не превосходящие заданного N, которые делятся на каждую из своих цифр C++

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

Или воспользуйтесь поиском по форуму:
Avalan4er
3 / 3 / 0
Регистрация: 30.11.2012
Сообщений: 41
16.02.2014, 02:17  [ТС]     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых #8
Да) Я все равно под на Qt и Delphi это буду переписывать, там разберусь, мне главное суть решения понять было)
Yandex
Объявления
16.02.2014, 02:17     Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
Ответ Создать тему
Опции темы

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