2014-02-17 4 views
1

Мой код очень прост:Как исправить этот странный расчет в паскале?

read(m,n); 
Str(m*n,s); 
writeln(s); 

и если я ставлю 1000000000 как для т и п в результате я получаю -1486618624, а также т и п LONGINT, поэтому они не являются сверх лимита с 1 000 000 000.

+1

Минимальное длинное значение = -2147483648 Максимальное длинное значение = 2147483647 – piXelicidio

ответ

1

Проблема в том, что m*n составляет 1,000,000,000,000,000,000 и не вписывается в LongInt. Попробуйте вместо этого использовать Int64 или QWord.

+0

У вас есть идеи, как его решить, когда оно составляет 10^100 000. Например, у меня число n, которое меньше 10^100 000 и m, и я должен сначала n mod m? Я также пробовал делать это со строкой, но это тоже слишком усложняло, а ограничение времени для этой задачи - 0,1 секунды. Кроме того, прежде чем кто-нибудь скажет, что это не для школы или обмана, я сам изучаю паскаль, я даже не изучаю его в школе. – Luka

+0

Найдите блок «bigint», есть несколько. Выбор зависит от вычисления производительности (выступает за двоичный) против дисплея (способствует десятичному) –

Смежные вопросы