Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизПятничная разминка заскорузлых нейронов и аксонов :) Найти похожие ветки
← →
palva © (2005-02-12 12:49) [40]default © (12.02.05 01:20) [34]
> хочешь какую-нить задачку порешать?
Конечно, хочу, но не всё понимаю. Вот, например, 6. Что значит найти точку? Указать ее координаты? Геометрически построить ее несложно. Нужно описать окружность вокруг треугольника, образуемого вершинами столбов, и через центр этой окружности перпендкулярно плоскости треугольника провести прямую до пересечения с плоскостью земли. Если это пересечение окажется внутри двора, то это и будет искомая точка P. Будет ли такой ответ решением задачи?
← →
palva © (2005-02-12 13:08) [41]8. 65/Sqrt(2)
Правильно?
← →
default © (2005-02-12 13:09) [42]опс, глупость в [39] сморозил
← →
Alx2 © (2005-02-12 13:14) [43]9. точки (1/2,1/4) или (-1/2,1/4) площадь = 4/3
S = 1/48*(1/x0+4*x0)^3 где x0 - абсцисса точки из которой проводится нормаль.
4. (3-sqrt(2))/3 * ctg(3/8*Pi)
← →
palva © (2005-02-12 13:47) [44]12.
{$APPTYPE CONSOLE}
const
dic: String="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
N = 5;
K = 3;
var
cc: array [1..K] of 1..4;
i, j, d: Integer;
begin
for i := 1 to K do cc[i] := i;
while(True) do begin
for i := 1 to K do Write(dic[cc[i]]);
WriteLn;
d := 0;
for j:=K downto 1 do begin
if cc[j] < N - K + j then begin
d := j;
break
end
end;
if d > 0 then begin
Inc(cc[d]);
j := cc[d] + 1;
for i := d + 1 to K do begin
cc[i] := j;
Inc(j)
end
end else begin
break;
end
end
end.
← →
ferr © (2005-02-12 14:13) [45]9. 0.5
← →
ferr © (2005-02-12 14:17) [46]9. Можно ли предположить, что площадь будет тем меньше, чем меньше разность по X между 2-мя точками пересечения параболы и прямой? Если да, то [45].
← →
palva © (2005-02-12 14:34) [47]5. Допустим, что 123456789 является членом этой последовательности. Предыдущий член этой последовательности не более чем 9-значный, поэтому имеет сумму цифр не более 81. Следовательно предыдущий член имеет следующую десятичную запись: 1234567xy, где x и y целые в диапазоне от 0 до 9. Теперь смотрим, как получились последние две цифры в числе 123456789 и составляем уравнение:
10x+y+10x+y+28+x+y=89 или после приведения подобных
21x+3y+28=89
Слева стоит число вида 3k+1, а справа число вида 3k+2, поэтому уравнение не имеет решения в целых числах.
Таким образом число 123456789 не является членом последовательности.
← →
MBo © (2005-02-12 17:22) [48]Верные ответы:
1. 4,6
2. Очередная строка с вероятностью 1/N (N-ее номер) заменяет имеющуюся
4. (4*Sqrt(2)-5).3=~0.2189
5. Не является. можно доказывать также через сумму цифр по модулю 9
9. x=+-1/2, S=4/3
10. 1,2,2,3,3,4 1,3,4,5,6,8
12. ОК, даны рекурсивный и нерекурсивный алгоритмы.
Теперь интересно рассмотреть такой подход - каждая комбинация соответствует n-разрядному числу, в двоичной записи которого установлено k единичных бит. Это соответствует устройству set (для указанного размера вместится в 4 байта, что приводимо к Integer). Вот как бы поэффективнее получить набор этих чисел?
← →
palva © (2005-02-12 18:04) [49]35! Делится на 11. Расположим столбиком частное от деления на 11, это же частное, сдвинутое влево на один разряд, и само число 35! Имея ввиду, что сумма первых двух чисел равна третьему можно заняться восстановлением цифр частного. Восстановление можно вести с обоих концов числа, причем процесс упирается в неизвестные цифры числа 35! Вот что у нас получилось:
_093937708785328uxxxxx6968303411200000000
093937708785328uxxxxx6968303411200000000
1033314796638614a9296b6651337523200000000
Сразу же замечаем, что либо u=5, либо u=6
Далее, перебираем варианты b=0,1...9 и, восстанавливая цифры x от конца к началу, смотрим чему получается равным b. Не все варианты получаются допустимыми. Мы выпишем здесь 2 варианта:
b=0
_0939377087853286357236968303411200000000
0939377087853286357236968303411200000000
10333147966386149929606651337523200000000
b=1
_093937708785328u448146968303411200000000
093937708785328u448146968303411200000000
1033314796638614a929616651337523200000000
Дальше восстанавливать цифры невозможно, поскольку u не может здесь быть ни 5, ни 6. Это единственный недопустимый вариант.
Удобнее и быстрее проводить этот процесс в текстовом редакторе.
Всего получается 9 вариантов:
a=0 b=2
a=1 b=3
a=2 b=4
a=3 b=5
a=4 b=6
a=5 b=7
a=6 b=8
a=7 b=9
a=9 b=0
Из этих вариантов возможен только тот, который дает сумму цифр, деляющуся на 9 (поскольку 35! делится на 9). Если посчитать сумму всех цифр кроме a и b, то получается 134, следовательно сумма цифр a и b может быть либо 1, либо 10. У нас это дает единственный вариант: 4 6
Ответ: 4 6
← →
Vit@ly © (2005-02-12 21:05) [50]2 MBo
А как по поводу реплики по 6 задаче Vit@ly © (11.02.05 20:23) [21]
Мне кажется, что на высОты столбов необходимы, какие-то дополнительные ограничения?
← →
default © (2005-02-13 00:24) [51]10.
о какой высоте идёт речь? чем выше прыгнешь тем больше угол обстрела...
← →
MBo © (2005-02-13 08:57) [52]>Vit@ly © (12.02.05 21:05) [50]
А зачем ограничения?
Решение задачи может подразумевать, что они будут даны в ответе.
Даже и без ограничений - такая точка на плоскости существует, пусть даже она за пределами двора.
>default © (13.02.05 00:24) [51]
если прыгнешь на 200 м., угол будет меньше, чем при прыжке на 100 м. ;)
← →
Vit@ly © (2005-02-13 10:04) [53]2 MBo © (13.02.05 08:57) [52]
Найти точку P на полу двора
:)
← →
palva © (2005-02-13 10:48) [54]11. Если допускать, что числа могут быть произвольными целыми, то имеются тривиальные решения: можно взять две традиционные кости, на одной из них увеличить все числа на гранях на k, а на другой - уменьшить. Интереснее, если все числа должны быть целыми положительными. Здесь, наверно, можно составить программу для перебора грубой силой, которая выполнялась бы за приемлемое время.
← →
palva © (2005-02-13 13:13) [55]Ну что, программу написал
{$APPTYPE CONSOLE}
type TDice=array [1..6] of 1..11;
var Dice1, Dice2: TDice; // Это шестигранные кости
var g: Integer; // Число вызовов функции test
procedure test; forward; // Функция проверки
procedure init_dice(var Dice: TDice); forward;
function next_dice(var Dice: TDice): Boolean; forward;
procedure main;
var i: Integer;
begin
(*
На обоих костях числа должны начинаться с единицы и не убывать
Наибольшие значения каждой кости в сумме должны равняться 12;
из соображений симметрии можно также считать, что первое
значение не превышает второе.
Числа кроме первого и последнего должны быть в диапазоне 2..11,
отсюда в частости вытекает, что наибольшие числа кости должны
быть не меньше трех.
*)
// Начальные присваивания
Dice1[1] := 1;
Dice2[1] := 1;
for i:=3 to 11 do begin // Цикл по наибольшему числу
writeln("Step ", i - 2);
Dice1[6] := i;
Dice2[6] := 12 - i;
init_dice(Dice1);
repeat // Цикл по первой кости
init_dice(Dice2);
repeat // Цикл по второй кости
test;
until next_dice(Dice2);
until next_dice(Dice1);
end;
end;
procedure test;
type Tptrn = array [2..12] of byte;
const ptrn: TPtrn = (1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1);
var
i, j, k: Integer;
freq: TPtrn;
OK: Boolean;
begin
Inc(g);
for k := 2 to 12 do freq[k] := 0;
for i := 1 to 6 do for j := 1 to 6 do Inc(freq[Dice1[i] + Dice2[j]]);
OK := True;
for k := 2 to 12 do begin
if freq[k] <> ptrn[k] then begin
OK := False;
break;
end
end;
if OK then begin
// Печать костей
Write("OK! ");
for i:=1 to 6 do Write(Dice1[i]:3);
Write(" ");
for i:=1 to 6 do Write(Dice2[i]:3);
WriteLn;
end;
end;
procedure init_dice(var Dice: TDice);
var i: Integer;
begin
for i := 2 to 5 do Dice[i] := 2;
end;
function next_dice(var Dice: TDice): Boolean;
var i, j, k, d6m1: Integer;
begin
d6m1 := Dice[6] - 1;
j := 1;
for i:=5 downto 2 do begin
if Dice[i] < d6m1 then begin
j := i;
break;
end;
end;
if j > 1 then begin
k := Dice[j];
Inc(k);
Dice[j] := k;
for i := j + 1 to 5 do Dice[i] := k;
Result:=False;
end else begin
Result:=True;
end
end;
begin
g := 0;
main;
writeln("Number of test function calls ", g);
end.
Выдача:
Step 1
Step 2
OK! 1 2 2 3 3 4 1 3 4 5 6 8
Step 3
Step 4
OK! 1 2 3 4 5 6 1 2 3 4 5 6
Step 5
Step 6
OK! 1 3 4 5 6 8 1 2 2 3 3 4
Step 7
Step 8
Step 9
Number of test function calls 5830
Кроме традиционного случая выдало еще два варианта, которые симметричны друг другу.
Окончательный ответ
1 2 2 3 3 4 1 3 4 5 6 8
← →
default © (2005-02-13 16:08) [56]palva © (13.02.05 13:13) [55]
уже решено было 11
см выше
только MBo номер 10 поставил а не 11
а решал я перебором(не самым тупым) без компа...
← →
default © (2005-02-13 16:20) [57]palva © (13.02.05 13:13) [55]
наверное, более оптимальный перебор это если идти с концов
то есть рассматривать суммы 2,12 потом 3,11 и тд
вручную достаточно быстро так перебирать уж никак не
5830 вариантов...
← →
Alx2 © (2005-02-13 21:18) [58]6. Высоты z1 z2 z3
при вершинах первая - в начале оси координат, третья - на оси абсцисс:
координата x есть (z3^2-z1^2+1)/2, по y : sqrt(3)/6 * (1+2*z2^2-z1^2-z3^2)
← →
default © (2005-02-13 22:55) [59]10. ~=15m
← →
аштшл (2005-02-14 00:24) [60]так что в 6 задаче длина верёвки дана?
← →
аштшл (2005-02-14 00:31) [61]Нашёл длины сторон треугольника построенного по вершинам столбов. А нужно ли ? =)
sqrt(1+b^2+a^2-2ab)
sqrt(1+c^2+a^2-2ac)
sqrt(1+b^2+c^2-2cb)
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.038 c