Другие языки программирования и технологии
Величина переменных.Паскаль.Описание дальше.
В паскале переменная integer имеет максимальное значение 32767.Longint макс-2147483647.В одной задачи на олимпиаде мне попалось такое задание:Нужна вывести символ на n месте,в определённой последовательности символов.Значение n не должно превышать 2 в двадцать шестой степени.Так вот,как мне реализовать,например,это программу,если я хочу ввести значение n=85671239984,если длина всей строки символов превышает 67 лямов.(Сама программа у меня есть,мне нужен именно этот момент)Конечно же,паскаль начинает ругаться,пытался составить через строки,тоже ругается,понятное дело,так как макс длина строки,это 255 символов.Подскажите,может,я где-то не так подумал....
Обычно это значение вычисляется путем хитрых вычислений. Как раз это и есть суть олимпиадных задач.
К примеру есть строка, которая строится путем прибавления самой к себе и добавлением очередного символа из алфавита. Итого получается aabaabcaabaabcd и так далее. В общем, по моему в районе 80м символов. Нужно по координате сказать символ.
Алгоритм решения - ищем в разных направлениях границы непрерывных последовательностей букв и собственно потом на основе этого вычисляем нужный символ.
К примеру есть строка, которая строится путем прибавления самой к себе и добавлением очередного символа из алфавита. Итого получается aabaabcaabaabcd и так далее. В общем, по моему в районе 80м символов. Нужно по координате сказать символ.
Алгоритм решения - ищем в разных направлениях границы непрерывных последовательностей букв и собственно потом на основе этого вычисляем нужный символ.
Во-первых, в Паскале диапазоны значений целого и вещественного типов не определены, они зависят только от реализации. 2^26 – это всего-то 67108864, у меня PascalABC.NET шутя справляется с массивами такого размера. Кстати, длина строки действительно ограничена 255 символами, но не длина символьного массива, а если ты не используешь специфические для строк операции, тебе годится и символьный массив.
Turbo Pascal – 16-и битный, там размер массива, насколько помню, ограничен 65536 байтами. В скобках замечу, что и в Turbo Pascal можно выкрутиться через динамические массивы, хотя проще просто использовать файлы. Но первое, что надо спросить – это какой именно компилятор Паскаля используется в олимпиаде, и уже от этого отплясывать. Хотя вообще странно было бы использовать в олимпиаде компиляторы двадцатилетней давности разработки - в вычислительной технике это почти вечность - но всё бывает ;)
Turbo Pascal – 16-и битный, там размер массива, насколько помню, ограничен 65536 байтами. В скобках замечу, что и в Turbo Pascal можно выкрутиться через динамические массивы, хотя проще просто использовать файлы. Но первое, что надо спросить – это какой именно компилятор Паскаля используется в олимпиаде, и уже от этого отплясывать. Хотя вообще странно было бы использовать в олимпиаде компиляторы двадцатилетней давности разработки - в вычислительной технике это почти вечность - но всё бывает ;)
Похожие вопросы
- Строковые переменные (Паскаль).Подскажите пожалуйста
- Снова Паскаль) ) Переменные и занимаемая ими память
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- Раздел описания переменных в C++: правила задания имени переменной.
- Чем опасна переменная вещественного типа? (например в Паскале, тип real)
- Паскаль. Сколько байт занимает переменная типа string[10]? 11? .
- var k:1..9; напечатать значение переменной k римскими цифрами. в турбо паскаль нужно написать программу
- По какой причине переменная у не меняется? Паскаль
- Напишите 5 задач по турбо Паскалю при решение которых нужна только переменная i . Помогите пожалуйста!
- Аналог ассоциативного массива в Паскале.