Как сравнивать большие числа? Например что больше! 52 или 10^46
*Простите моё невежество, конечно же:
52!
Для таких чисел можно напрямую
var i:integer; f:real; begin f:=1; for i:=1 to 52 do f:=f*i; writeln(f>1e46) end.
А для много больших
var i:integer; f:real; begin f:=0; for i:=1 to 52 do f:=f+ln(i); writeln(f>ln(1e46)) end.
.
Ты либо не выучил, как пишется факториал, либо совсем тупой.
Что ты там сравнить собрался,
В изложенном тобой примере-то? Двухзначное число с сорокасемизначным?
И правда, какое же больше?
Ну а если там все же факториал, то:
52! > 10^46
Просто сравнивай количество знаков, и радуйся.. Это ведь так сложно, да?
Если случится чудо и количество знаков будет одинаковым, то придётся применить сложнейшкю технологию сравнения цифр от 0 до 9 поочерёдно.
Опять же, можно просто сидеть и умножать все числа в факториале 52, не запоминая и не учитывая их, до того момента, пока твоё число не станет 47 значным.
Если не стало, а ты дошёл до конца, то твой факториал меньше 10 в 47 степени, если стало, а ты все ещё можешь продолжать умножать огромное число на остатки от факториала, то факториал больше..
Словом, сложностей нет, но нудно.
Для ЭВМ-дело пары секунд)
Выполняя операцию сравнения над большими числами.
Можно разбить числа на множители, удобные для счёта, сократить одинаковые и взаимно сокращаемые и получить уже два числа, по которым и можно определить, какое больше