Пожалуйста, напишите программу! Маленький Петя недавно начал посещать кружок по...

0 голосов
55 просмотров

Пожалуйста, напишите программу!

Маленький Петя недавно начал посещать кружок по программированию. Естественно, перед ним появилась задача выбрать язык, на котором он будет программировать. После долгих размышлений, он понял, что Java — лучший выбор. Главным аргументом в пользу выбора Java было то, что в ней есть очень большой целочисленный тип данных — BigInteger.

Но после посещения занятий кружка, Петя понял, что не все задачи требует использования типа BigInteger. Как оказалось, в некоторых задачах намного удобнее использовать маленькие типы данных. Поэтому возникает вопрос: «Какой целочисленный тип использовать, если нужно хранить натуральное число n?»

Петя знает лишь 5 целочисленных типов:

1) byte занимает 1 байт, позволяет хранить числа от - 128 до 127

2) short занимает 2 байта, позволяет хранить числа от - 32768 до 32767

3) int занимает 4 байта, позволяет хранить числа от - 2147483648 до 2147483647

4) long занимает 8 байт, позволяет хранить числа от - 9223372036854775808 до 9223372036854775807

5) BigInteger позволяет хранить любое целое число, но при этом не является примитивным типом, и операции с ним выполняются гораздо медленнее.

Для всех указанных выше типов значения границ включаются в диапазон значений.

Из этого списка Петя хочет выбрать самый маленький тип, в котором можно хранить натуральное число n. Так как BigInteger работает гораздо медленнее, Петя рассматривает его в последнюю очередь. Помогите ему.

Входные данные
В первой строке записано натуральное число n. Оно состоит не более чем из 100 цифр и не содержит лидирующих нулей. n не может являться пустой строкой.


Выходные данные
Выведите первый тип из списка "byte, short, int, long, BigInteger", в котором можно хранить натуральное число n, в соответствии с данными, приведенными выше.


Информатика (15 баллов) | 55 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Программа в комментарии:

(3.8k баллов)
0

//прога на Pascal`e {part1}
type
tip = record
name: string;
dip: string;
end;

var
tipi: array [1..5] of tip;
vv : string;
i, j : byte;
bool : boolean;

begin
readln (vv);

tipi[1].name:='byte'; tipi[1].dip:='127';
tipi[2].name:='short'; tipi[2].dip:='32767';
tipi[3].name:='int'; tipi[3].dip:='2147483647';
tipi[4].name:='long'; tipi[4].dip:='9223372036854775807';
tipi[5].name:='BigInteger';

0

{part2}

0

for i:=1 to 5 do
begin
bool:=false;

if length (vv) > length (tipi[i].dip) then bool:=true
else
if length(vv) = length (tipi[i].dip) then
for J:=1 to length (vv) do
begin
if vv[j] < tipi[i].dip[j] then break;
if vv[j] > tipi[i].dip[j] then bool:=true;
end;

if bool = false then break;

end;

write (tipi[i].name);
end.

0

Огромное спасибо!

0

Тоже программа на С++:

0

#include
using namespace std;
int main()
{
long double n;
cin>>n;
if(n<=127)<br>cout<<"byte";<br>else if(n<=32767) cout<<"short";<br>else if(n<=2147483647) cout<<"int";<br>else if(n<=9223372036854775807) cout<<"long";<br>else cout<<"BigInteger";<br>return 0;
}

0 голосов

Python:
n = int(raw_input())
if n<=127 and n>=-128:
    print "byte"
elif n>=-32768 and n
    print "short"
elif n>=-2147483648 and n
    print "int"
elif n>=-9223372036854775808 and n
    print "long"
else: print "BigInteger"

(24 баллов)