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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2014, 21:38   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Да
Точно?! ёёёёёёёёёё
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.10.2014, 22:00   #12
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Так какой алгоритм поиска решения в итоге получается? Может в него легко вывод ответа ляжет. Я лично математику совсем уже забыл и алгоритм так вот в голову не идёт
pu4koff вне форума Ответить с цитированием
Старый 07.10.2014, 22:07   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
алгоритм так вот в голову не идёт
я тож чото ума не разложу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.10.2014, 22:15   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Разложить можно абсолютно любое число: например 1=3+3-5.
Как раскладывается 58 ?
Я как-то так вообразил:
Код:
var i,q,w:integer;
begin
  i:=68;
  if (i mod 3)=0 then write(i,'=',i div 3,'*3') else
  if (i mod 5)=0 then write(i,'=',i mod 5,'*5') else begin
    if ((i mod 5)*5-3)=i then  write(i,'=',i div 5,'*5+5-3')
    else write(i,'=',i div 3,'*3+5-3')
  end;
  readln;
end.
Ну понятно что тут есть умножение. И не все тут учтено.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2014, 22:30   #15
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

разложение не единственно (или я какое-то условие пропустил).

что мешает выбрать разложение в виде:

count_5 = chislo/5;
count_3 = 0;

switch (chislo % 5) {
case 1:
count_3 = 2; count_5--;
break;
case 2:
count_3 = -1; count_5++;
break;
case 3:
count_3 = 1;
break
case 4:
count_3 = -2; count_5+=2;
break;
}

chislo = count_3*3 + count_5*5;

Последний раз редактировалось f.hump; 07.10.2014 в 22:36.
f.hump вне форума Ответить с цитированием
Старый 07.10.2014, 23:13   #16
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Так какой алгоритм поиска решения в итоге получается? Может в него легко вывод ответа ляжет. Я лично математику совсем уже забыл и алгоритм так вот в голову не идёт
Цитата:
Сообщение от min@y™ Посмотреть сообщение
я тож чото ума не разложу.
Так выглядит рекурсивный алгоритм, который перечисляет и выводит всевозможные разложения (композиции) числа N.

Код:
#include <iostream>
using namespace std;

int n,*sum;

void Parse(int left,int min=0,int i=0)
{
	if (left<0 || min==n)
		return;
	else;
	sum[i]=min;
	if (min!=0)
		Parse(left-min,min,i+1);
	else;
	Parse(left-1,min+1,i);
	if (left==0)
		for (int g=0;g<=i;g++)
			cout<<sum[g]<<(g!=i ? "+":";\r\n");
	else;
}

int main()
{
	cin>>n; 
	sum=new int[n];
	print_terms(n);
	delete(sum);
}
Здесь разобравшись я отсеял все композиции, содержащие числа, не равные 3 и 5. Оптимизировал.

Но исходя из условия я понял, что это не то решение.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 07.10.2014, 23:27   #17
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
разложение не единственно (или я какое-то условие пропустил).

что мешает выбрать разложение в виде:

count_5 = chislo/5;
count_3 = 0;

switch (chislo % 5) {
case 1:
count_3 = 2; count_5--;
break;
case 2:
count_3 = -1; count_5++;
break;
case 3:
count_3 = 1;
break
case 4:
count_3 = -2; count_5+=2;
break;
}

chislo = count_3*3 + count_5*5;
Премного благодарен за помощь !
Это то, что мне нужно
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 08.10.2014 в 00:41.
OmegaBerkut вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04