Американская олимпиада. Ч 1

Эта задача всюду гуляет по инету, например по ссылке:
https://www.youtube.com/shorts/wiOYTDEv378

По условию задачи для американцев необходимо найти только выражение b^b. В принципе решается довольно элементарно, нужно только немного догадаться с соотношением параметров "c" и "b". Меня же заинтересовал вопрос о возможности своими программными средствами найти все четыре параметра. Конечно же, самым универсальным средством является метод Монте Карло. Но вполне возможно, что и итерационные конструкции существуют. Программа по Монте Карло совсем элементарная:

ab=343:bc=10:ac=7
s0=10^10
z=0.01
a0=4:b0=5:c0=1
for i=1 to 2000000
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
c=c0*(1+z*(ran()-.5))
z1=abs(a^b-ab)
z2=abs(b^c-bc)
z3=abs(a^c-ac)
s=z1+z2+z3
if s<s0 then
s0=s:a0=a:b0=b:c0=c
print a using "##.########";
print b using "##.########";
print c using "##.########";
print s,a^b,b^c,a^c;
print b^b using "#####"
if s<0.2 then z=0.0001:fi
if s<0.0001 then z=0.0000001:fi
fi
next i

Принял всего два миллиона циклов, на что потребуется менее минуты расчетов. Концовка внушительной таблицы показана в иллюстрации справа. Все параметры распечатаны с точностью до восьмого знака после запятой, но всегда можно повысить ее хоть в два раза. В конце строк имеем проверку исходных данных. Все совпадает. Да и результат для американцев b^b в точности равен тысяче. Параметр "s" в таблице - это точность отклонения от абсолютных значений. Чем циклов больше, тем  меньше окажется "s".

26 января 2024 г.


Рецензии