Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Нахождение минимального натурального числа

Автор: Juhn 23.12.2007 21:45

Задали написать программу в паскале на десяточку
Условие такое: найти минимальное натуральное число N, которое можно изобразить в виде суммы кубов двух натуральных чисел в двух вариантах. (N=a(3)+b(3)=c(3)+d(3)). (3) - в третей степени.

Честно говоря не знаю как написать эту прогу, а десять получить очень хочется
Очень надеюсь на вашу помощь.

Автор: andriano 23.12.2007 23:26

Помощь подразумеват, что ТЫ что-то делаешь, а тебе советуют, но совсем не то, что КТО-ТО будет делать вместо тебя.

Автор: Juhn 23.12.2007 23:34

Ну поэтому я и прошу помощи, так как не знаю как её сделать :/

Автор: andriano 24.12.2007 0:40

Представь, что тебе ее надо сделать просто на листе бумаги. С чего бы ты начал?

Автор: Feagor 24.12.2007 1:02

Грубым перебором делай, ты начни, тебе помогут.

Автор: Juhn 24.12.2007 2:04

program 12345;
var
n:integer;
begin
........
......
......
....
..
readln;
end.

И это всё что я знаю знаю sad.gif
А какой нужен код, вот для меня задачка :/

Автор: мисс_граффити 24.12.2007 3:03

я бы еще переменных добавила...
а так - как уже сказали - перебором.

Автор: andriano 24.12.2007 11:52

Цитата(Juhn @ 23.12.2007 22:04) *

И это всё что я знаю знаю sad.gif
А какой нужен код, вот для меня задачка :/

Еще раз: начинать нужно не с кода, а со словесного описания.

Автор: Lapp 24.12.2007 19:06

Самый примитивный перебор можно организовать так..

Одно число (это будет a) увеличиваешь в цикле от 1 до получения ответа.
Внутри организуешь цикл по b от 1 до a.
Считаешь сумму их кубов (s).
Теперь делаешь цикл по c от 1 до целой части кубического корня из s, исключая а и b.
В этом цикле вычисляешь t=s-c^3
Если t есть куб целого числа (d^3), то задача решена.

Автор: Feagor 24.12.2007 21:28

Смотрюю никто не хочет помогать с кодом lol.gif
Ну ладно, так как у меня есть немного свободного времени...

Добавлено через 11 мин.

uses crt;
var n,a,b,c,d:integer;
label 1;
begin
a:=1;
b:=1;
c:=1;
n:=1;
for n:=1 to 100 do
for a:=1 to 100 do
for b:=1 to 100 do
for c:=1 to 100 do
for d:=1 to 100 do if (n=a*a*a+b*b*b) and (n=c*c*c+d*d*d) then {goto 1;}writeln(n,' ',a,' ',b,' ',c,' ',d);
{1:writeln(n,' ',a,' ',b,' ',c,' ',d);}
end.



Добавлено через 21 мин.
проверял щас с условиям что все переменные - разные, комп чуть не повеслися, после 15 минут работы компа решил, что хватит, щелкнув ctrl+break lol.gif lol.gif lol.gif

Автор: Michael_Rybak 24.12.2007 22:01

Feagor, твое решение неоптимально. На порядок менее оптимально, чем описанное Lapp'ом. Цикл для n не нужен.

Автор: Feagor 25.12.2007 1:05

я понимаю, но парню видно нужно хоть что-то написать, а ему одни советы дают. а ваще согласен что у lapp'а на порядок оптимальнее

Автор: Michael_Rybak 25.12.2007 2:52

Цитата
я понимаю, но парню видно нужно хоть что-то написать, а ему одни советы дают.


Вот именно. Так и должно быть. Ему нужно написать - ему советуют как, и он пишет.