Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Еще задачки   Найти похожие ветки 

 
MBo   (2002-04-04 17:09) [0]

Раз пошла такая пьянка...

1) onTimer
Label1.Caption:=FormatDateTime("hh:nn",now);
сколько минут пройдет по таким часам, пока в первый раз не сойдутся стрелки стрелочных.

2) Найти число счастливых 6-значных билетов.


 
Виктор Щербаков   (2002-04-04 17:14) [1]

2) 55252


 
MBo   (2002-04-04 17:18) [2]

>Виктор Щербаков
У тебя рулончик с собой ;)
правильно, конечно. программно можно по-разному реализовать.


 
Виктор Щербаков   (2002-04-04 17:19) [3]

Самый тупой способ:

var a, b, c, d, e, f, Count: Integer;
begin
Count := 0;
for a := 0 to 9 do
for b := 0 to 9 do
for c := 0 to 9 do
for d := 0 to 9 do
for e := 0 to 9 do
for f := 0 to 9 do
if a + b + c = d + e + f then Inc(Count);


 
Виктор Щербаков   (2002-04-04 17:21) [4]

Но вот если количество цифр в номерах билета не известно до компиляции, то можно и с рекурсией сделать.


 
MBo   (2002-04-04 17:22) [5]

ясен пень ;)
можно вместо миллиона сотней операций обойтись


 
SPeller   (2002-04-04 17:38) [6]

>MBo © (04.04.02 17:09)
>cойдутся стрелки стрелочных


Начиная откуда ?


 
MBo   (2002-04-04 17:40) [7]

виноват
Дано - часы показывают N часов M минут.
сколько целых минут пройдет до момента совпадения часовой и минутной стрелок.


 
Anatoly Podgoretsky   (2002-04-04 17:43) [8]

не 65?


 
MBo   (2002-04-04 17:49) [9]

если они совпадают, то да, а в общем случае надо получить.


 
Alx2   (2002-04-05 08:09) [10]

>MBo © (04.04.02 17:22)
Борис, видел про счастливые билеты решение, которое на бумажке подсчитать можно было. Сейчас не помню что там и где, но кажется интеграл по окружности в комплексной области от какой-то хитрой функции.


 
MBo   (2002-04-05 08:37) [11]

>Alx2
Неслабо...
Как говорил Чапаев "Мне квадратный трехчлен не то,что разложить,
представить страшно" ;)

вот решение (©Akina) с числом операций ~3000.
есть метод с ~80 операций

count:array[0..27] of integer;
for i:=0 to 27 do
count[i]:=0;
for i:=0 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do
inc(count[i+j+k]);
amount:=0;
for i:=0 to 27 do
amount:=amount+sqr(count[i]);


 
Alx2   (2002-04-05 08:52) [12]

>MBo © (05.04.02 08:37)
Вот еще:
Рассмотрим производящий полином: (1+x+x^2+x^3+x^4+x^5+x^6+x^7+x^8+x^9)^3
Если раскрыть скобки, то получим:
1+3*x+6*x^2+10*x^3+15*x^4+21*x^5+28*x^6+36*x^7+45*x^8+55*x^9+63*x^10+69*x^11+73*x^12+75*x^13+75*x^14+73*x^15+69*x^16+63*x^17+55*x^18+45*x^19+36*x^20+28*x^21+21*x^22+15*x^23+10*x^24+6*x^25+3*x^26+1*x^27. При соответствующей степени x стоит коэФфициент, показывающий количество троек цифр от 0..9, образующий заданную сумму.
Так, количество троек, образующих сумму 10 равно 63.
Возьмем счастливые билеты:
Сумма первых троек = сомме последних троек, следовательно, чтобы получить количество счастливых билетов, надо сложить квадраты коэффициентов. Если же учесть, что распределены симметрично, то получим сумму
кол-во сч. билетов = 2*(1^2+3^2+6^2+10^2+15^2+21^2+28^2+36^2+45^2+55^2+63^2+69^2+73^2+75^2) = 55252

В твоем варианте, кстати, количество итераций можно сократить еще вдвое.


 
Alx2   (2002-04-05 08:54) [13]

Сорри, недописался полином:

1+3*x+6*x^2+10*x^3+15*x^4+21*x^5+28*x^6+36*x^7+45*x^8+55*x^9+
63*x^10+69*x^11+73*x^12+75*x^13+75*x^14+73*x^15+69*x^16+63*x^17+
55*x^18+45*x^19+36*x^20+28*x^21+21*x^22+15*x^23+10*x^24+6*x^25+
3*x^26+1*x^27


 
MBo   (2002-04-05 08:56) [14]

вот мой вариант
for n:=0 to 13 do begin
k:=(n+1)*(n+2);
if n>9 then
dec(k,3*(n-9)*(n-8));
S:=S+ Sqr(k);
end;
S:=S div 2;


 
Alx2   (2002-04-05 08:59) [15]

>MBo © (05.04.02 08:56)
Класс! По количеству итераций тоже 14, прямо как
в 2*(1^2+3^2+6^2+10^2+15^2+21^2+28^2+36^2+45^2+55^2+
63^2+69^2+73^2+75^2) = 55252



 
MBo   (2002-04-05 09:10) [16]

А в качестве решения для ленивых студентов, как мне кажется, подходит метод Akin-ы, поскольку не совсем тупому там все ясно,
а свой я втолковывал, но вроде бесполезно, так и не сможет объяснить тот, кто задавал вопрос, если спросят.(это на ixbt было)


 
Alx2   (2002-04-05 10:43) [17]

Количество счастливых билетов:
Интеграл при x=0..Pi от 1/Pi*(sin(10*x)/sin(x))^6
:)
Подсчитал сейчас - и действительно... офигительно :)


 
MBo   (2002-04-05 10:54) [18]

а почему????
или это случайно, из разряда Pi^E=E^Pi ?


 
Alx2   (2002-04-05 11:20) [19]

>MBo © (05.04.02 10:54)
>а почему????
Х/з, что-то пересекающееся с производящими функциями (немного похоже на то, что выше писал)
>или это случайно, из разряда Pi^E=E^Pi ?
А оно то как раз и не равно :))

Это общая формула, кстати есть:
количество счастливых билетов в системе с основанием D и длиной числа 2*p есть интеграл по x=0..Pi от 1/Pi*(sin(D*x)/sin(x))^(2*p)



 
Alx2   (2002-04-05 11:25) [20]

Линк: http://refal.net/~korlukov/scpj/happytickets/


 
MBo   (2002-04-05 13:27) [21]

Идея ясна. Про биномиальные коэффициенты я догадался, когда увидел, что строчка треугольника Паскаля получается для чисел до 10, но
связать с вычетами мне бы было не по силам. ТФКП почти не обучен... ;(


 
Alx2   (2002-04-05 13:33) [22]

Я ТФКП тоже почти забыл. Надо в книжки лезть, чтобы вспомнить, что там вокруг полюсов происходит...


 
MBo   (2002-04-05 15:02) [23]

про стрелки
Z:=(N*60) div 11;
if M<=Z then
K:=Z-M
else
K:= ( (N+12)*60 ) div 11 - M;




Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.006 c
3-49816
Art1
2002-04-17 16:31
2002.05.16
Как программно узнать колическто строк в DBGride?


14-50083
HI
2002-04-04 06:41
2002.05.16
Gospoda programisti,pomogite jenjine(SOVETOM!:)


1-49993
Jaguar
2002-04-30 10:36
2002.05.16
Создание компонентов


6-50062
dimmu
2002-02-19 19:42
2002.05.16
Использование TTcpServer/TTcpClient и TServerSocket/TClientSocket


1-49905
beginner
2002-05-02 20:15
2002.05.16
Shareware





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский