4 / 4 / 6
Регистрация: 30.11.2012
Сообщений: 41
1

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

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

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

Помогите пожалуйста составить алгоритм, в любом виде. Что-то не доходит до меня как это решить. Реализую я сам т.к. на двух языках нужно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2014, 12:41
Ответы с готовыми решениями:

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

Найти числа, которые можно представить в виде суммы квадратов двух натуральных чисел
n Приводится натуральное число. Найдите числа в виде квадратов из двух натуральных чисел из чисел...

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

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

7
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
15.02.2014, 16:20 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;
}
0
4 / 4 / 6
Регистрация: 30.11.2012
Сообщений: 41
15.02.2014, 16:55  [ТС] 3
Хм, ну вот например быстрый тест
n=6, a=2, b=3
5 не делится без остатка ни на 2 ни на 3, но из данных слагаемых можно составить это число, значит по условию оно подходит
0
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 01:53 4
Лучший ответ Сообщение было отмечено Avalan4er как решение

Решение

Да-да) я не правильно понял задачку) вот исправил) вкраце объясню как работает: вводим три числа к примеру 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;
}
заставил поломать голову короче) если не понятно пиши)
1
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 01:57 5
Лучший ответ Сообщение было отмечено Avalan4er как решение

Решение

а кстати вот результаты)
Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых
1
4 / 4 / 6
Регистрация: 30.11.2012
Сообщений: 41
16.02.2014, 02:12  [ТС] 6
Так, я завтра все пересчитаю еще раз и, надеюсь, все сойдется. Тут еще я заметил надо включать сами числа a и b в ответ, так как по идее под произвольным числом слагаемых можно понимать и 0.
0
4 / 4 / 2
Регистрация: 15.02.2014
Сообщений: 25
16.02.2014, 02:15 7
уже как вывести ответ сам сделаешь!
1
4 / 4 / 6
Регистрация: 30.11.2012
Сообщений: 41
16.02.2014, 02:17  [ТС] 8
Да) Я все равно под на Qt и Delphi это буду переписывать, там разберусь, мне главное суть решения понять было)
0
16.02.2014, 02:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2014, 02:17
Помогаю со студенческими работами здесь

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Задание: Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из...

Найти все натуральные числа, не превосходящие заданного N, которые делятся на каждую из своих цифр
Помогите решить!!!

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

Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.
Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.


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

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

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