Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизЗадачка для любителей математики Найти похожие ветки
← →
Pearled (2005-06-01 14:50) [0]Как с помощью одного оператора типа ShowMessage(....) вывести сумму от суммы от суммы ...(и т.д. , пока не останется 1-значное число) цифр целого числа заданного в edit1.text ? Вызывать нестандартные функции, естественно, запрещается..
← →
TUser © (2005-06-01 14:53) [1]Нет такого оператора
← →
12DFBDDh © (2005-06-01 14:55) [2]Pearled (01.06.05 14:50)
где ты промежуточное значение будеш хранить?
← →
Pearled (2005-06-01 14:57) [3]TUser
> Нет такого оператора
Есть
12DFBDDh
> где ты промежуточное значение будеш хранить?
Попробуйте без него обойтись..
← →
Думкин © (2005-06-01 14:58) [4]Это МВо ссылку даже давал. :)
← →
TUser © (2005-06-01 15:01) [5]> Есть
В каком языке есть оператор ShowMessage() ?
← →
Pearled (2005-06-01 15:06) [6]Я разве сказал опреатор ShowMessage() ? Я имел в виду оператор подобного типа. Или ты хочешь сказать что строка ShowMessage(""); не является оператором?
← →
TUser © (2005-06-01 15:10) [7]Не является
← →
КаПиБаРа © (2005-06-01 15:15) [8]TUser © (01.06.05 15:10) [7]
Это как то влияет на решение самой задачи?
Меня всегда интересовало зачем люди, которым нечего сказать по существу вопроса начинают придираться к второстепенным моментам. Может Вы мне разъясните это?
← →
MBo © (2005-06-01 15:16) [9]Не надо мудрить с ShowMessage и с Edit1.Text.
Тебе нужна такая функция:
function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
?
ее тело займет одну строчку.
← →
Pearled (2005-06-01 15:24) [10]
> Тебе нужна такая функция:
> function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
> ?
> ее тело займет одну строчку.
Да, именно это я и хотел сказать.
TUser
Может это и не совсем правильно, но иногда эту конструкцию называют отператором вызова процедуры.
← →
12DFBDDh © (2005-06-01 15:24) [11]MBo © (01.06.05 15:16) [9]
Вызывать нестандартные функции, естественно, запрещается
← →
12DFBDDh © (2005-06-01 15:26) [12]Pearled (01.06.05 15:24) [10]
Вызывать нестандартные функции, естественно, запрещается
это true или
function DigitSumAndSumTillOnlyOneLeft(i:Integer):Integer;
или это true ?
← →
Pearled (2005-06-01 15:28) [13]MBo
Только не одну строчку, а один оператор присваивания.
← →
Pearled (2005-06-01 15:30) [14]12DFBDDh
я так понял, что MBo не дал ответ, а просто переформулировал постановку задачи
← →
Alexander Panov © (2005-06-01 15:33) [15]Pearled (01.06.05 15:30) [14]
Ничего он не переформулировал.
Сформулируй снова. Иначе ничего не понятно.
← →
MBo © (2005-06-01 15:34) [16]>Только не одну строчку, а один оператор присваивания.
Угу, присваиваиние будет одно. И строчка между begin-end тоже одна.
← →
MBo © (2005-06-01 15:39) [17]>Alexander Panov © (01.06.05 15:33) [15]
>Сформулируй снова. Иначе ничего не понятно.
Написать короткую функцию, принимающую целое число, и вычисляющую
while количестводесятичныхцифр(N)>1 do begin
N:=суммецифр(N)
end
но более коротким способом
← →
Pearled (2005-06-01 15:41) [18]Короче:
Дано число, пусть это будет x типа word. Надо найти сумму цифр от суммы цифр ... числа. Например 987 -> 9+8+7 = 24 -> 6
И это нужно вычислить в выражении, не используя нестандартные функции (стандартные можно).
То есть чтобы можно было например записать showmessage(IntToStr(...)), где ... - искомое выражение.
Надеюсь более понятно теперь объяснил.
← →
TUser © (2005-06-01 15:52) [19]> MBo © (01.06.05 15:39) [17]
function A (I: integer): integer;
begin
if I < 10 then A:=I else A:=A((I mod 10)+A(I div 10));
end;
← →
Alx2 © (2005-06-01 15:55) [20]TUser © (01.06.05 15:52) [19]
A(-10)=-10 :)
← →
jack128 © (2005-06-01 15:57) [21]Pearled (01.06.05 15:41) [18]
где ... - искомое выражение. - вот критический момент ;) Нужно написано выражение , вычисляющее сумму цифр, так ты описал. При этом в выражении запрещено вызывать нестандартные функции. Я правельно понял??
TUser © (01.06.05 15:52) [19]
function A (I: integer): integer;
begin
if I < 10 then A:=I else A:=A((I mod 10)+A(I div 10));
end;
- это не выражение.
← →
SergP. (2005-06-01 16:05) [22]showmessage(inttostr(MyVariable mod 9));
???
← →
SergP. (2005-06-01 16:07) [23]showmessage(inttostr(((MyVariable-1) mod 9) + 1));
???
← →
Alx2 © (2005-06-01 16:08) [24]SergP. (01.06.05 16:05) [22]
а числа, кратные 9?
← →
Alx2 © (2005-06-01 16:09) [25]SergP. (01.06.05 16:07) [23]
работает :)
← →
Pearled (2005-06-01 16:12) [26]SergP
> showmessage(inttostr(((MyVariable-1) mod 9) + 1));
>
> ???
Правильно :)
← →
Alx2 © (2005-06-01 16:14) [27]SergP. (01.06.05 16:07) [23]
А как доказать?
← →
pasha_golub © (2005-06-01 16:24) [28]Alx2 © (01.06.05 16:14) [27]
Это вторая теорема Ферма ;0)
← →
pasha_golub © (2005-06-01 16:25) [29]Alx2 © (01.06.05 16:14) [27]
Это вторая теорема Ферма ;0)
← →
Alx2 © (2005-06-01 16:25) [30]Нашел доказательство. Вопрос снят :)
← →
pasha_golub © (2005-06-01 16:41) [31]Alx2 © (01.06.05 16:25) [30]
Рассказывай :)
← →
Fredericco © (2005-06-01 16:58) [32]2 pasha_golub © (01.06.05 16:41) [31]
Это же вторая теорема Ферма! :-))))
← →
Alx2 © (2005-06-01 16:58) [33]pasha_golub © (01.06.05 16:41) [31]
Запишем число M в виде M=sum(10^k*a[k],k=0..n)
а через f(M) обозначим (M-1) mod 9 + 1;
Тогда f(M)=(M - 1) mod 9 + 1 = (sum(a[k],k=0..n) mod 9 - 1) mod 9 +1=f(sum(a[k],k=0..n))
то есть f(M) совпадает с f(сумма цифр M) = >
f(сумма цифр M) совпадает с f(сумма цифр суммы цифр M)
и т.д.
В конце убеждаемся, что f(k)=k, где k=0..9
Доказано.
← →
pasha_golub © (2005-06-01 17:09) [34]Fredericco © (01.06.05 16:58) [32]
мадаг
← →
SergP © (2005-06-01 20:28) [35]
> Тогда f(M)=(M - 1) mod 9 + 1 = (sum(a[k],k=0..n) mod 9 -
> 1) mod 9 +1=f(sum(a[k],k=0..n))
если кому не очевидно, то добавлю:
вышеуказанное (остаток от деления числа на 9 равен остатку от деления его суммы цифр на 9) можно получить исходя из того, что:
(k*10^n) mod 9 = k mod 9
← →
Думкин © (2005-06-02 06:43) [36]Ну и память однако у людев. :((
Борис как-то давал задачку и потом ссылки. Ключевая фраза: цифровой корень.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.043 c