13.08.2015, 12:31 | #1 (permalink) |
Member
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Улучшение решения задачи про кубы
Код:
program z1; var m2, i,j,k:integer; m,m1,s:real; begin writeln('VVedite chislo:'); readln(m1); s:=3; m:=exp(ln(m1)*s); m2:=round(m); for i:=1 to m2 do for j:=1 to m2 do for k:=1 to m2 do if i*i*i+j*j*j+k*k*k=m1 then begin writeln( i,' ', j,' ', k); end; writeln('nelzia'); end. |
13.08.2015, 12:31 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Обратите внимание на схожие темы - это должно вам помочь Улучшение параметров усилителя ЛОМО Улучшение К174УН7 |
13.08.2015, 15:39 | #3 (permalink) | |
Member
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот что получилось, но можно ли лучше?
Цитата:
|
|
13.08.2015, 16:03 | #4 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
У меня так получилось :
uses crt; var i,j,t,x,y,z,n,m,p:Longint; m1:Extended; begin ClrScr; p:=0; Write('Cislo = '); Readln(n); m1:=exp(ln(n)/3); m:=Trunc(m1); for i:=1 to m do begin x:=i*i*i; if p<>0 then Break else for j:=1 to m do begin y:=j*j*j; if p<>0 then Break else for t:=1 to m do begin z:=t*t*t; if (x+y+z)=n then begin Writeln(i,' ',j,' ',t); Inc(p); Break; end; end; end; end; if p=0 then Writeln('Nelzja'); ReadKey; end. |
13.08.2015, 17:44 | #5 (permalink) |
Member
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Евгений, спасибо - всё отлично работает!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
13.08.2015, 17:50 | #6 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Уж не знаю, лучше или нет, но мне нравится больше. По крайней мере, удалось обойтись без вещественных форматов.
Код:
Var M,a,b,c,d:Integer; T:boolean; Begin Write('M = '); Readln(M); a:=0; repeat Inc(a); b:=0; repeat Inc(b); c:=0; repeat Inc(c); d:=M-a*a*a-b*b*b-c*c*c; T:=(d=0); until T or (d<0); until T or (b*b*b+a*a*a>M-1); until T or (a*a*a>M-2); if T then writeln('Yes: ',M,' = ',a,'^3 + ',b,'^3 + ',c,'^3') else writeln('No'); Readln End. |
13.08.2015, 18:55 | #7 (permalink) |
Member
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Vladimir_S, большое спасибо! Очень даже понятно!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
free pascal, задача, помощь |
|
|