Делим отрезок
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
Делим отрезок
Извиняюсь, если было. Имеем отрезок целой длинны N. Случайным образом делим его два раза на три отрезка опять же целой (ненулевой) длинны. Какова вероятность, что из полученных отрезков можно построить треугольник?
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
venco wrote:Я просто поделил число разбиений, дающих треугольник (3 неравенства), на число всех разбиений.
Ладно, буду думать - спасибо.
А вот это было?
Найти наибольшее число, у которого все десятичные цифры разные и не равны нулю, при этом само число делится на каждую из цифр, его составляющих.
PS Методом грубой силы я его нашел, конечно. Но как это аналитически решается?
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
rGlory wrote:Найти наибольшее число, у которого все десятичные цифры разные и не равны нулю, при этом само число делится на каждую из цифр, его составляющих.
PS Методом грубой силы я его нашел, конечно. Но как это аналитически решается?
Сначала выбираем набор цифр, коротые в принципе способны дать такое число.
Далее перебираем перестановки этих цифр по убыванию величины с одним простым необходимым условием.
Тринадцатая перестановка даёт искомое число:
9867312
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
rGlory wrote:venco wrote:Сначала выбираем набор цифр, коротые в принципе способны дать такое число.
Может я совсем отупел, но по какому критерию?
2 и 5 одновременно быть не могут, т.к. тогда число должно делиться на 10 и появится цифра 0.
Дальше, надо убрать ещё одну цифру, чтобы признак делимости на 9 и/или 3 выполнялся. Таким образом максимальное число цифр - 7. Варианты:
без 5 и 4: 9876321
без 2 и 7: 9854631
Первый вариант более перспективный, т.к. больше.
Дальше перебираем перестановки, т.к. чтобы делилось на 8 и 7, делимость на остальные цифры приложится.
Для делимости на 8 надо, как минимум, чтобы последняя цифра была чётной.
Поехали:
9876312
9876132
9873612
9873216
9873162
9873126
9872316
9872136
9871632
9871362
9871326
9871236
9867312 бинго
Это число получилось больше максимального из второго набора цифр, значит это и есть ответ.
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
venco wrote:2 и 5 одновременно быть не могут, т.к. тогда число должно делиться на 10 и появится цифра 0.
...
9867312 бинго
Это число получилось больше максимального из второго набора цифр, значит это и есть ответ.
Вот мой метод грубой силы:
Code: Select all
#include <iostream>
#include <vector>
int main()
{
std::vector< int > numbers;
for( int i = 1; i < 10; ++i ) numbers.push_back( i );
int max = 0;
do {
for( int k = 1; k < 10; ++k ) {
int result = 0;
for( int i = 0, pow = 1; i < k; ++i, pow *= 10 ) result += pow * numbers[ i ];
bool div = true;
for( int i = 0; i < k && div; ++i )
if( result % numbers[ i ] ) div = false;
if( !div ) continue;
if( result > max ) max = result;
}
} while( std::next_permutation( numbers.begin(), numbers.end() ) );
std::cout << "result is: " << max << std::endl;
return 0;
}
result is: 9867312
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
Иоп wrote:Ждем аналогичного метода для отрезков с треугольниками
Venco хоть и объяснил, но я недостаточно умный, чтобы понять - мне "на пальцах" нужно
Мне реально лениво переписывать все неравенства тругольника и суммирования подходящих вариантов. Там всё довольно просто, но длинно.
При суммировании получаются треугольные числа.
Скажу лишь для начала, что число всех разбиений отрезка N на 3 = (N-1)(N-2)/2.
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
Иоп wrote:rGlory wrote:Вот мой метод грубой силы:
Ждем аналогичного метода для отрезков с треугольниками
Venco хоть и объяснил, но я недостаточно умный, чтобы понять - мне "на пальцах" нужно
Без проблем:
Code: Select all
#include <iostream>
void calc( int N )
{
int able = 0;
int total = 0;
for( int i = 1; i < N - 1; ++i )
for( int j = i + 1; j < N; ++j ) {
const int a = i;
const int b = j - i;
const int c = N - j;
if( a + b > c && a + c > b && b + c > a )
++able;
++total;
}
double p = 0.25 + 0.75 / ( N % 2 ? N - 2 : 1 - N );
std::cout << "For N: " << N << " probability " << able << "/" << total << " or "
<< double( able ) / total << " where venco's p == " << p << std::endl;
}
int main()
{
for( int N = 3; N < 21; ++N )
calc( N );
return 0;
}
результат:
Code: Select all
For N: 3 probability 1/1 or 1 where venco's p == 1
For N: 4 probability 0/3 or 0 where venco's p == 0
For N: 5 probability 3/6 or 0.5 where venco's p == 0.5
For N: 6 probability 1/10 or 0.1 where venco's p == 0.1
For N: 7 probability 6/15 or 0.4 where venco's p == 0.4
For N: 8 probability 3/21 or 0.142857 where venco's p == 0.142857
For N: 9 probability 10/28 or 0.357143 where venco's p == 0.357143
For N: 10 probability 6/36 or 0.166667 where venco's p == 0.166667
For N: 11 probability 15/45 or 0.333333 where venco's p == 0.333333
For N: 12 probability 10/55 or 0.181818 where venco's p == 0.181818
For N: 13 probability 21/66 or 0.318182 where venco's p == 0.318182
For N: 14 probability 15/78 or 0.192308 where venco's p == 0.192308
For N: 15 probability 28/91 or 0.307692 where venco's p == 0.307692
For N: 16 probability 21/105 or 0.2 where venco's p == 0.2
For N: 17 probability 36/120 or 0.3 where venco's p == 0.3
For N: 18 probability 28/136 or 0.205882 where venco's p == 0.205882
For N: 19 probability 45/153 or 0.294118 where venco's p == 0.294118
For N: 20 probability 36/171 or 0.210526 where venco's p == 0.210526
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
Ну тогда еще одну, напоследок:
По горизонтали и вертикали (сверху вниз) записаны числа, не начинающиеся с нуля и являющиеся квадратами. Сколько существует возможных решений?
Code: Select all
X X X X
X
X X X
X
X X X X
По горизонтали и вертикали (сверху вниз) записаны числа, не начинающиеся с нуля и являющиеся квадратами. Сколько существует возможных решений?
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
rGlory wrote:Ну тогда еще одну, напоследок:
Ну это только перебором:
Code: Select all
#! /usr/bin/perl
for $i (10..31) {
++$c3[$i*$i%10];
}
for $i (32..99) {
++$c4[$i*$i%10];
}
for $i (100..316) {
$s=$i*$i;
$c += $c4[int($s/10000)]*$c3[int($s/100)%10]*$c4[$s%10];
}
print "Total: $c\n";
Total: 45097
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
-
- Уже с Приветом
- Posts: 1418
- Joined: 04 Aug 2005 19:12