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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2015, 16:31   #1
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию Помогите: Стоит себе ферма. На ферме сидит фермер и считает, сколько кого есть у него на ферме

Помогите с программой:
Ферма
Стоит себе ферма. На ферме сидит фермер и считает, сколько кого есть у него на ферме - a верблюдов, b баранов, с зеленых тараканов. Почему-то an + bn = cn. Известно n. Найти все остальное.
Формат входных данных
Файл ferma.in содержит одно целое число n (0≤ n ≤ 100).
Формат результата
В файл ferma.out необходимо вывести через пробел три различных целых числа a,b,c таких, что an + bn = cn, 1 ≤ a, b, c ≤ 100. Если решений несколько, вывести то, где a минимально. Если и таких несколько, вывести то, где минимально b и т.д. Вывести −1, если решения нет.
В входном файле записано 100, то есть степень будет 100.

Код:
var
a,b,c,n:extended;
k,l,i,x,m:integer;
fi,fo:text;
begin
Assign(fi,'D:\ferma.in');
Reset(fi);
Read(fi,n);
Assign(fo,'D:\ferma.out');
Rewrite(fo);
x:=0;
for i:=1 to 100 do begin
a:=exp(n*ln(i));
for l:=1 to 100 do begin
b:=exp(n*ln(l));
for k:=1 to 100 do begin
c:=exp(n*ln(k));
if (a+b=c) and(x<1) then begin
Write(fo,a:0:0,' ',b:0:0,' ',c:0:0);
x:=x+1;
end;
end;
end;
end;
m:=-1;
if x<1 then 
Write(fo,m);
Close(fo);
end.
В выходном файле постоянно получается одно и тоже:
1 1267650600228229400000000000000 1267650600228229400000000000000
Почему то в строке
if (a+b=c) and(x<1) then begin
a+b постоянно равняется c. И так при любом n от 10 до 100.
При n<10 программа работает правильно.
Подскажите, что не так.

Последний раз редактировалось dimon_snake; 05.11.2015 в 16:34.
dimon_snake вне форума Ответить с цитированием
Старый 05.11.2015, 16:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не понял юмора. Судя по exp(n*ln(i)) формулу an + bn = cn следует трактовать как a^n + b^n = c^n и все в целых числах. По очень известной теореме не нулевых решений нет для n>2. Не чего и огород городить, разве что использовать нулевые решения. Для n=2 нет проблем, например 3^2+4^2=5^2. Для n=1 все совсем тривиально. Вот тебе решения:
Код:
n=0  -1
n=1   1 1 2
n=2   3 4 5
n>2  -1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.11.2015 в 17:01.
Аватар вне форума Ответить с цитированием
Старый 05.11.2015, 17:05   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
По очень известной теореме не нулевых решений нет для n>2.
я бы даже сказал - "Великой теореме" (вики)

ferma.jpg


p.s. тоже не понял, к чему этот весь балаган с решением!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2015, 17:12   #4
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию

Спасибо большое
dimon_snake вне форума Ответить с цитированием
Старый 05.11.2015, 17:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

А, кстати, в заголовке задачи и содержится название Великой теоремы..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.11.2015, 17:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
в заголовке задачи и содержится название Великой теоремы
Угу. А ТС следует во-первых почитать как сравнивать числа с плавающей точкой, так как он нельзя. Во-вторых на досуге выяснить, хоть примерно , а сколько же будет значащих цифр например в exp(50)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сколько стоит такая программка? И сколько по времени её сделать? Палыч I Фриланс 8 10.09.2010 16:23
Помогите у кого есть желание. Программа на языке Турбо Паскаль. Proper-life Фриланс 18 31.07.2009 16:28
У кого что есть!!!помогите!!! Proo Общие вопросы C/C++ 0 06.06.2009 23:17
У кого есть время помогите со строками ByFly Помощь студентам 3 03.02.2009 21:10