Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Простая задача (http://forum.oszone.net/showthread.php?t=103804)

rim_muvies 27-03-2008 21:43 769343

Простая задача
 
Помоги решить задачу :
Дано натуральное четырехзначное число. Провенрить, раван ли сумма цифр данного числа их произведению ? , если можно с иходником

detrin 27-03-2008 22:23 769370

Ма-а-аленький вопрос. Вам нужно решить задачу или подсказать как решить? :)

rim_muvies 28-03-2008 07:53 769491

Вообще лучшим варинатонм было б объяснить что писать в onclick на кнопке, на форме как я понял нудно тольок Edit, кнопка и допустим Panel

Busla 28-03-2008 12:50 769690

А в чём сложность-то?
На входе строка из 4х символов.
Каждый символ преобразуешь в число
Складываешь, умножаешь, сравниваешь

vadimiron 28-03-2008 12:56 769696

Цитата:

Цитата rim_muvies
раван ли сумма цифр данного числа их произведению »

А такое вообще возможно? Ну кроме 1111

Drongo 28-03-2008 14:22 769761

vadimiron, Конечно, не четырёхзначное, но число 123 отвечает этому стандарту, например:
Код:

1 + 2 + 3 = 6
и
1 * 2 * 3 = 6

Вообще это я так понял задачка на совершенное число. Совершенное число это такое число когда все его сомножители (но не само число) в сумме дают это же число. Подобные задачи встречались на С++. Если это оно, то вот ссылка на объяснение совершенных чисел...
Совершенное число (Или я чуток запутался в объяснении?! :dont-know чую, что, что-то не то, а что именно, понять не могу) Может задачка чисто для теории, возможно\невозможно, а не для того, чтобы находить такие числа?! Хотя если задали такую задачу, значит существуют, это моё мнение, хотя я могу ошибаться. Блин, точно запутался, если что, поправьте меня в теории чисел?!
(Сам я не решал ещё эту задачку, мой язык С++), не могу придумать алгоритм. :dont-know Число 28 тоже совершенное число, но каким боком, я так понять и не могу, в книге одно написано, в Википедии, другое, теряюсь... Зная алгоритм, можно без напряга написать на С++, а потом пусть человеку переведут на его родной Delphi... Но моего уровня, не хватит...

DedAlex 28-03-2008 14:31 769774

vadimiron, 1111 не подходит. Подходят комбинации цифр 1, 1, 2, 4.
rim_muvies,
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, d : byte;
begin
  a := StrToInt ( Edit1.Text [ 1 ] );
  b := StrToInt ( Edit1.Text [ 2 ] );
  c := StrToInt ( Edit1.Text [ 3 ] );
  d := StrToInt ( Edit1.Text [ 4 ] );
  if a + b + c + d = a * b * c * d then
    Panel1.Caption := 'Равны'
  else
    Panel1.Caption := 'Не равны';
end;

Нет никаких проверок, если нужны добавьте сами.

Drongo 28-03-2008 15:04 769806

DedAlex,
Цитата:

Цитата DedAlex
Подходят комбинации цифр 1, 1, 2, 4. »

Точно, а значит и наоботот:
4211
2411
1241
1214
и т.д. Правильно?!

DedAlex 28-03-2008 15:11 769815

Drongo, правильно. Всего их 12 штук.

Drongo 28-03-2008 15:14 769819

DedAlex,
Цитата:

Цитата DedAlex
Всего их 12 штук. »

Это 12 комбинаций данного числа или таких чисел вообще?!

pva 28-03-2008 15:32 769838

Если применить чуток теории и сделать предварительные рассчёты, то задача упрощается:
Код:

(* это скрипт для пакета Wolfram Research Mathematica 4.0 *)
In[1]: tab1 = Prime[Range[2000]];
(* перебираем все 4-значные простые числа, для которых сумма разрядов равна произведению *)
Part[tab1,
In[2]:  Flatten@Position[tab1,
      x_ /; Block[{dig1 = RealDigits[x]},
          dig1[[2]] == 4 && (Plus @@ dig1[[1]] == Times @@ dig1[[1]])]]]
(* получаем *)
Out[1]: {2141, 2411, 4211}

то есть нужно просто проверить на совпадение с любым из этих чисел ;-)

mrcnn 29-03-2008 08:06 770271

i - заданное число
x - сумма
y - произведение
Алгоритм для _любой_ значности положительного числа, ограничение только в типе:

Код:

    int x=0;
    int y=1;

    while (i != 0){
    x=x+i%10;
    y=y*(i%10);
    i=(i-(i%10))/10;
    }


DedAlex 29-03-2008 12:45 770347

Drongo, и 12 комбинаций и таких четырехзначных чисел вообще.

Drongo 31-03-2008 13:44 771540

DedAlex, Спасиб за разъяснения! :up Тогда смысл писать программу?! Ну, кроме как в педагогических целях...


Время: 08:02.

Время: 08:02.
© OSzone.net 2001-