Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2015, 18:54   #1
movchinar
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 15
По умолчанию c++ и натуральные числа

Ну вот такая задачка...
Покажите две таких натуральных числа, чтобы произведение и сумме этих чисел были равны,,,
Честно говоря у меня это задача на c++, но не две числа, а N, где 1<=N<=1000.
movchinar вне форума Ответить с цитированием
Старый 04.02.2015, 19:21   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Под нужный Вам язык я думаю адаптируете...
Код:
package ru.bugrimov;

public class Main {
    private static final int N = 1000;
    public static void main(String ... args) {
        for (int i = 1; i <= N; i++) {
            if(loop(i) != 0) {
                System.out.println("Результат: " + i + " - " + loop(i));
            }
        }
    }

    public static int loop(int count) {
        for (int i = 1; i <= N; i++) {
            if((count  * i) == (count + i))
                return i;
        }
        return 0;
    }
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 04.02.2015 в 19:43.
Bugrimov вне форума Ответить с цитированием
Старый 04.02.2015, 21:01   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Мне очень интересно.
Как много таких чисел было найдено?

Условие задачи для двух чисел можно переписать иначе:
1/а + 1/в =1.
Т.е. если одно из слагаемых больше 0.5, то второе должно быть меньше 0.5.
С ростом чисел слагаемые будут меньше 0.5.
Выписанное уравнение справедливо только для а = в = 2.
Но если вопрос стоит о двух натуральных числах, то решения нет.
Для 3-х слагаемых имеем: 1/вс + 1/ас + 1/ав = 1.
Т.к. а, в, с - натуральные, то решения нет и тут.

Стоит ли из-за этого писать программу???


Как-то так, ...
PS: Сам прогу не писал, потому вопрос о количестве решений и поставил.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.02.2015, 22:17   #4
movchinar
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 15
По умолчанию

Если N=3, то есть ответ... например 1*2*3=1+2+3
movchinar вне форума Ответить с цитированием
Старый 04.02.2015, 22:31   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Решение для произвольного N
Код:
var
	n, i : Integer;
begin
	ReadLn(n);
	
	for i := 1 to n-2 do
		Write(1, ' ');
	Write(2, ' ', n);
end.
Poma][a вне форума Ответить с цитированием
Старый 04.02.2015, 22:33   #6
movchinar
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Под нужный Вам язык я думаю адаптируете...
Код:
package ru.bugrimov;

public class Main {
    private static final int N = 1000;
    public static void main(String ... args) {
        for (int i = 1; i <= N; i++) {
            if(loop(i) != 0) {
                System.out.println("Результат: " + i + " - " + loop(i));
            }
        }
    }

    public static int loop(int count) {
        for (int i = 1; i <= N; i++) {
            if((count  * i) == (count + i))
                return i;
        }
        return 0;
    }
}
Очень спасибо,
Я новичок, и не знаю никакого класса и так далее. Если вам не трудно покажите еще легкий код на c++.
movchinar вне форума Ответить с цитированием
Старый 04.02.2015, 22:36   #7
movchinar
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 15
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Мне очень интересно.
Как много таких чисел было найдено?

Условие задачи для двух чисел можно переписать иначе:
1/а + 1/в =1.
Т.е. если одно из слагаемых больше 0.5, то второе должно быть меньше 0.5.
С ростом чисел слагаемые будут меньше 0.5.
Выписанное уравнение справедливо только для а = в = 2.
Но если вопрос стоит о двух натуральных числах, то решения нет.
Для 3-х слагаемых имеем: 1/вс + 1/ас + 1/ав = 1.
Т.к. а, в, с - натуральные, то решения нет и тут.

Стоит ли из-за этого писать программу???


Как-то так, ...
PS: Сам прогу не писал, потому вопрос о количестве решений и поставил.
Если N=3, то есть ответ... например 1*2*3=1+2+3
movchinar вне форума Ответить с цитированием
Старый 04.02.2015, 22:42   #8
movchinar
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Решение для произвольного N
Код:
var
	n, i : Integer;
begin
	ReadLn(n);
	
	for i := 1 to n-2 do
		Write(1, ' ');
	Write(2, ' ', n);
end.
Честно говоря не понимала алгоритм, код.
Я только что начинала заниматься с такими задачами.
movchinar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа a и b (a<b). Получить все простые числа из промежутка от a до b. ( с# ) NastyaShuvalova Помощь студентам 0 16.12.2013 18:08
Даны натуральные числа k,n, действительные числа... (Pascal) Макс Мел Помощь студентам 0 04.06.2012 13:43
Даны натуральные числа n и m. Получить сумму m последних цифр числа n pahanzona Microsoft Office Excel 11 27.02.2011 02:17
вводим два числа, получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m Sparky Помощь студентам 2 22.11.2009 21:59
Даны натуральные числа m,n. Посчитать сумму m последнего числа n. лялька Паскаль, Turbo Pascal, PascalABC.NET 6 25.12.2008 15:22