Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Задачка для любителей математики   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.039 c
9-1111541090
VectorGeometry
2005-03-23 04:24
2005.06.29
GLScene Как найти минимальное расстояние от точки до прямой ?


14-1117290223
Cerberus
2005-05-28 18:23
2005.06.29
Cтарая программа.


14-1117814291
Новичоккк
2005-06-03 19:58
2005.06.29
Delphi 7 vs Delphi 8 vs Delphi 2005


14-1117422721
Думкин
2005-05-30 07:12
2005.06.29
Одним мастаком в Новосибе стало меньше


14-1117478658
Ермак
2005-05-30 22:44
2005.06.29
Срочно! О принтере HP IIP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский