есть 3 переменные в shell, например:
a=4000000;b=2634523;c=12532;
нужно посчитать (a-b)/c, чтобы дробная часть осталась.
следующие 2 варианта не катят, т.к. отбрасывается дробная часть
expr ( $ a - $b ) / $c
let d=a-b;let e=d/c
> нужно посчитать (a-b)/c, чтобы дробная часть осталась.
> следующие 2 варианта не катят, т.к. отбрасывается дробная частьШтаны на лямках, т.м.!
$ expr \( $a - $b \) \* 100 / $c |sed 's/..$/.&/'
108.95
$ _
freepercen=`expr 100 - \( \( ${lcresource[1]} \* 100 \) / ${lcresource[0]} \) |sed 's/..$/.&/'`
sesperuser=`expr \( ${lcresource[0]} - ${lcresource[1]} \) / $lcpersist |sed 's/..$/.&/'`к первой переменной добавляет точку вначале, получается .34%,
а во второй переменной вставляет точку после перво
freepercen=`expr 100 - \( \( ${lcresource[1]} \* 100 \) / ${lcresource[0]} \) |sed 's/..$/.&/'`
sesperuser=`expr \( ${lcresource[0]} - ${lcresource[1]} \) / $lcpersist |sed 's/..$/.&/'`к первой переменной добавляет точку вначале, получается .34%,
а во второй переменной вставляет точку после первой цифры, полается 1.11, а должно 111.95
> есть 3 переменные в shell, например:
> a=4000000;b=2634523;c=12532;
> нужно посчитать (a-b)/c, чтобы дробная часть осталась.
> следующие 2 варианта не катят, т.к. отбрасывается дробная часть
> expr ( $ a - $b ) / $c
> let d=a-b;let e=d/cИспользование bc допускается?
$ a=4000000; b=2634523; c=12532; echo "($a-$b)/$c" | bc -l
108.95922438557293329077
> Использование bc допускается?
>$ a=4000000; b=2634523; c=12532; echo "($a-$b)/$c" | bc -l
> 108.95922438557293329077К сожалению нет, на этом серваке bc не установлен, и до установить нет возможности..:-(
Думаю может через awk как-то сделать..
>через awk как-то сделать..Ч-чё мешает?
$ awk 'BEGIN{print ('"$a"'-'"$b"')/'"$c"'}'
108.959
$ _
$ awk 'BEGIN{printf"%*.*f\n",100,97,('"$a"'-'"$b"')/'"$c"'}'
108.9592243855729378765317960642278194427490234375000000000000000000000000000000000000000000000000000
$
> $ awk 'BEGIN{printf"%*.*f\n",100,97,('"$a"'-'"$b"')/'"$c"'}'
> 108.9592243855729378765317960642278194427490234375000000000000000000000000000000000000000000000000000Ху...вый у тебя калькулятор, после 14-ой цифры в мантиссе уже ошибка.
(4000000-2634523)/12532 = http://www.wolframalpha.com/input/?i=solve%28%2840...
>> $ awk 'BEGIN{printf"%*.*f\n",100,97,('"$a"'-'"$b"')/'"$c"'}'
> Ху...вый у тебя калькулятор, после 14-ой цифры в мантиссе уже ошибка.
>www.wolframalpha.coСам такой, :-P скрипт с зависимостью от интернета сделаешь??
> скрипт с зависимостью от интернета сделаешь??Знаю людей с зависимостью от ..., а вот скрипт от интернета.
freepercen=`awk 'BEGIN{print 100 - (('${lcresource[1]}' * 100) / '${lcresource[0]}')}'`
sesperuser=`awk 'BEGIN{print ('${lcresource[0]}' - '${lcresource[1]}') / '$lcpersist'}'`
> нужно посчитать (a-b)/c, чтобы дробная часть осталась.Ура, зачёты и курсовые начались... Будем разминать моск!!! :D
Вспоминаем школу - деление столбиком. :)
#!/bin/basha=4000000;
b=2634523;
c=12532;
m=();x=$((a-b));
s=$((x/c));
h=$((x-(c*s)));if [ $h == 0 ];
then
echo "$s.0";
exit;
fi;p=100;
for ((i = 0; i < p; i++))
do
h=$((h * 10));
ss=$((h / c));
h=$((h - c * ss));m[$i]=$ss;
done;
echo -ne "$s.";
for (( i = 0; i < ${#m[*]}; i++ ))
do
echo -ne "${m[$i]}";
done;echo;
$ a.sh
108.9592243855729332907756144270667092243855729332907756144270667092243855729332907756144270667092243855
> Вспоминаем школу - деление столбиком. :)
>108.9592243855729332907756144270667092243855729332907756144270667092243855729332907756144270667092243855Дополнительная задачка на лето :)
Сие число является трансцендентным, но переводческим: 108.95(922438557293329077561442706670)
1. Найти этот период на bash
2. Представить в виде рациональной дроби.P.S. Сравнение строк и символов не юзать, только чистый матан!
P.P.S. На сервере ничего нет, установлен только bash :)
>> Вспоминаем школу - деление столбиком. :)
>>108.9592243855729332907756144270667092243855729332907756144270667092243855729332907756144270667092243855Силён, да!:)
> Дополнительная задачка на лето :)
> Сие число является трансцендентным, но переводческим: 108.95(922438557293329077561442706670)Ты, конечно, задирал студента, и там д.б.быть "ра...ным" и "пери..кой десятичной ...". В общем да, так их.
>>> Вспоминаем школу - деление столбиком. :)
>>>108.9592243855729332907756144270667092243855729332907756144270667092243855729332907756144270667092243855
> Силён, да!:)Скажи мил человек, ты где живешь? Есть пара задумок...
>> Вспоминаем школу - деление столбиком. :)
>>108.9592243855729332907756144270667092243855729332907756144270667092243855729332907756144270667092243855
> Дополнительная задачка на лето :)
> Сие число является трансцендентным, но переводческим: 108.95(922438557293329077561442706670)
> 1. Найти этот период на bash
> 2. Представить в виде рациональной дроби.
> P.S. Сравнение строк и символов не юзать, только чистый матан!
> P.P.S. На сервере ничего нет, установлен только bash :)1) Спасибо за интересный вопрос. Профукал ссылку на эту тему в свое время на него, однако Аноним (спасибо) помог снова найти ее. Убил даже пару часов, чтоб институтскую математику вспомнить (азы только, за что еще раз спасибо:)
2) bash работает только с целочисленными значениями, чистый матан не выйдет в любом случае - для выделения дробной части числа все равно придется пользоваться строковым опрерациями (хотя и не совсем теми, что Вы явно запретили) что-то вроде:
# 108.95(922438557293329077561442706670)
v='108.95922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670'
f="${v##*.}"3) Разве понятие "трансцендентное число" не означает, что это число имеет бесконечный НЕПОВТОРЯЮЩИЙСЯ ряд цифр, что идет в разрез с другим условием задачи - "число является периодическим"?
ИМХО некорректная постановка задачи. Если будет время, прокомментируйте мои соображения. Интересно.
PS
Спасибо (даже если ответ не верен), что сподвигнули меня немного математику вспомнить )
> 3) Разве понятие "трансцендентное число" не означает, что это число имеет бесконечный
> НЕПОВТОРЯЮЩИЙСЯ ряд цифр, что идет в разрез с другим условием задачи
> - "число является периодическим"?Ну да, фигню сморозил, я имел в виду бесконечным.
>> 3) Разве понятие "трансцендентное число" не означает, что это число имеет бесконечный
>> НЕПОВТОРЯЮЩИЙСЯ ряд цифр, что идет в разрез с другим условием задачи
>> - "число является периодическим"?
> Ну да, фигню сморозил, я имел в виду бесконечным.ладно. кажется я иронию понял и вики даже почитал ).
- Каждое трансцендентное вещественное число является иррациональным
http://ru.wikipedia.org/wiki/%D0%A2%D1%8...- Иррациональное число: Представляет собой бесконечную непериодическую десятичную дробь.
http://ru.wikipedia.org/wiki/%D0%98%D1%8...я дал ответ - задача нерешаема в предложенных условиях.
вопрос решен или нет? жду ответа преподавателя ).
PS
http://www.opennet.me/openforum/vsluhforumID9/9492.html#30
> вопрос решен или нет? жду ответа преподавателя ).или корректировки вопроса.
>> вопрос решен или нет? жду ответа преподавателя ).
> или корректировки вопроса.1. Число рациональное: 108+(12021/12532), но оно не влезет в целый типа баша,
период 30 знаков, а чтоб определить повтор нужно хотя бы 61.Если число не влазит в процессор, его режут по кускам и работают
либо нудными циклическими алгоритмами со сдвигами, либо матричные
преобразования. Если честно, ужасно лень :)2. А чтоб сделать из числа с мантисой рациональную дробь,
достаточно разделить на порядок, найти НОД и упростить дробь.напр.
108.12 == 108+0.12 == 108+(12/100) => НОД(12,100)= 4;
108.12 == 108+(3/25) => (108*25+3)/25 == 2703/25;---
>>> вопрос решен или нет? жду ответа преподавателя ).
>> или корректировки вопроса.
> 1. Число рациональное: 108+(12021/12532), но оно не влезет в целый типа баша,
> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.Тссс! Не говори никому. Делимое-дедитель помещаются, и этого достаточно.
Запоминаешь для кажого выведенного разряда (цифры) результата пару делимое-делитель. Как только перед выводом очередной цифры результата пара повторилась -- период найден. (Не обязательньно с первой цифры или с первой после запятой. Т.е.может быть "непариодическая" чать в десятичной дроби.)
Про НОД - ты уже написал. Можно дробь поупрощать вначале.
> Если число не влазит в процессор, его режут по кускам и работают
Где bash и где процессор?:)
>2. А чтоб сделать из числа с мантисой рациональную дробь,
Вещественного с _округлением? Или :))периодической десятичной дроби?
>>но оно не влезет в целый типа баша,
>> период 30 знаков, а чтоб определить повтор
>Делимое-дедитель помещаются, и этого достаточно.Точнее, делимое <= делитель <= MAXINT/10. После чего, видимо, начинается мультиворд арифметик.
>>>> вопрос решен или нет? жду ответа преподавателя ).
>>> или корректировки вопроса.
>> 1. Число рациональное: 108+(12021/12532), но оно не влезет в целый типа баша,
>> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.
> Тссс! Не говори никому. Делимое-дедитель помещаются, и этого достаточно.108+(12021/12532) - эта дробь и в мозг влезет.
А я про это число, его только в матрицу и по кускам - домножил, сравнил, запомнил, следующий,...
108.95922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670
> Про НОД - ты уже написал. Можно дробь поупрощать вначале.
НОД это и есть, то число на которое можно максимальное упростить дробь. :)
> Вещественного с _округлением? Или :))периодической десятичной дроби?
В том виде в котором его вводят. Есть машинная эпсилон - 304 степень, больше ну никак.
для остального придумали libgmp
----Так что задача сводится к трём функциям: Работа с большими числами, Нахождение порядка мантиссы, Нахождение НОД,
ну и мелочь всякя, типа упрощение дроби, умножение матриц... в общем уже пошли подсказки.
....
>>>>> вопрос решен или нет? жду ответа преподавателя ).
>>>> или корректировки вопроса.
>>> 1. Число рациональное: 108+(12021/12532), но оно не влезет в целый типа баша,
>>> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.
>> Тссс! Не говори никому. Делимое-дедитель помещаются, и этого достаточно.
> 108+(12021/12532) - эта дробь и в мозг влезет.
> А я про это число, его только в матрицу и по кускам
> - домножил, сравнил, запомнил, следующий,...- в каком формате входные данные на bash придут? эта мозгогребаная дробь как факт не может уже попасть в чистом виде на вход скрипта (и вручную ты до сто-пятьдесят-сотого знака не пропишешь это значение) - значит только в том виде, который ты сейчас дал... в текстовом (формат не важен)
- смысл решения только на bash? это реальная задача или все же так - задание на лето?>[оверквотинг удален]
> :)
>> Вещественного с _округлением? Или :))периодической десятичной дроби?
> В том виде в котором его вводят. Есть машинная эпсилон -
> 304 степень, больше ну никак.
> для остального придумали libgmp
> ----
> Так что задача сводится к трём функциям: Работа с большими числами, Нахождение
> порядка мантиссы, Нахождение НОД,
> ну и мелочь всякя, типа упрощение дроби, умножение матриц... в общем уже
> пошли подсказки.
Внимательно повторяю:>> Тссс! Не говори никому. Делимое-дедитель помещаются, и этого достаточно.
#>> делимое <= делитель <= MAXINT/10
> 108+(12021/12532) - эта дробь и в мозг влезет.
> А я про это число, его только в матрицу и по кускам
> - домножил, сравнил, запомнил, следующий,...Нет.(С)
> 108.95922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670922438557293329077561442706670
$ ./b.sh |less
1365477 / 12532 = 108.95(922438557293329077561442706670)
1 / 40 = 0.025
1 / 20 = 0.05
1 / 2 = 0.5
1 / 1 = 1
1 / 3 = 0.(3)
1 / 30 = 0.0(3)
1 / 300 = 0.00(3)
1 / 7 = 0.(142857)
1 / 70 = 0.0(142857)
1 / 700 = 0.00(142857)
1 / 7 = 0.(142857)
3 / 7 = 0.(428571)
2 / 7 = 0.(285714)
6 / 7 = 0.(857142)
4 / 7 = 0.(571428)
5 / 7 = 0.(714285)
1 / 9 = 0.(1)
1 / 90 = 0.0(1)
(END)>> Вещественного с _округлением? Или :))периодической десятичной дроби?
> В том виде в котором его вводят. Есть машинная эпсилон -
> 304 степень, больше ну никак.
> для остального придумали libgmpЗадание на лето#2: из колонки после " = " получать то, что "до".
Напр.: 0.00(142857) >>> 1 /700//Да, наверное, можно... Подсказка и ./b.sh -- в следующих выпусках. Stay tuned///
> Задание на лето#2: из колонки после " = " получать то, что "до".
> Напр.: 0.00(142857) >>> 1 /700Дык, эта
echo '
1365477 / 12532 = 108.95(922438557293329077561442706670)
1 / 40 = 0.025
1 / 20 = 0.05
1 / 2 = 0.5
1 / 1 = 1
1 / 3 = 0.(3)
1 / 30 = 0.0(3)
1 / 300 = 0.00(3)
1 / 7 = 0.(142857)
1 / 70 = 0.0(142857)
1 / 700 = 0.00(142857)
1 / 7 = 0.(142857)
3 / 7 = 0.(428571)
2 / 7 = 0.(285714)
6 / 7 = 0.(857142)
4 / 7 = 0.(571428)
5 / 7 = 0.(714285)
1 / 9 = 0.(1)
1 / 90 = 0.0(1)' | awk '{print $5 $4 $1 $2 $3}';А ваще, баян (см. п.2)- http://www.opennet.me/openforum/vsluhforumID9/9467.html#20
>>> вопрос решен или нет? жду ответа преподавателя ).
>> или корректировки вопроса.СТОП!!! )))
Вопрос от Вас был задан (дополнительная задача на лето). И мне кажется я свой ответ довольно развернуто объяснил (дважды). То, что Вы подразумевали в конечном результате, роли не играет.
Я хочу получить ответ, на свой ответ (тавтология - знаю). Изначально Ваша задача содержит противоречивые и взаимоисключающие математические термины (гениев в расчет не берем - они как раз для решения таких противоречий :). Решения Вашей задачи в предоставленных Вами условиях не существует.
Признаете?
Корректировки вопроса я не видел, вижу решение, которое мне пытаются показать, рассказывая очевидные вещи (в байте 8-бит итд - утрирую конечно - но суть такая же)
ADD
браузер подгюлчил (он у меня старенький) - теперь увидел тему, что сейчас число якобы стало иррациональным. увидел Ваш подход и некоторые решения. Математически - да. Практически, раз друге услови задачи не изменились - все равно - не решаемо (вернее решаемо, но напрямую связано с неадекватным гемороем битвы за этот результат в оставшихся ограничивающих условиях)
>[оверквотинг удален]
>>> или корректировки вопроса.
> СТОП!!! )))
> Вопрос от Вас был задан (дополнительная задача на лето). И мне кажется
> я свой ответ довольно развернуто объяснил (дважды). То, что Вы подразумевали
> в конечном результате, роли не играет.
> Я хочу получить ответ, на свой ответ (тавтология - знаю). Изначально Ваша
> задача содержит противоречивые и взаимоисключающие математические термины (гениев в расчет
> не берем - они как раз для решения таких противоречий :).
> Решения Вашей задачи в предоставленных Вами условиях не существует.
> Признаете?Вопроса было два:
1. Из того длинного числа с мантиссой найдти и показать период.
2. Вернуть дробь обратно. float -> int/intЧисло можешь представлять как хочешь, - массив, строка, два числа, число и массив,...
Строгих два правила: Для вычислений НЕ юзать внешние утилиты и НЕ использовать строковое сравнение.
>[оверквотинг удален]
>> Я хочу получить ответ, на свой ответ (тавтология - знаю). Изначально Ваша
>> задача содержит противоречивые и взаимоисключающие математические термины (гениев в расчет
>> не берем - они как раз для решения таких противоречий :).
>> Решения Вашей задачи в предоставленных Вами условиях не существует.
>> Признаете?
> Вопроса было два:
> 1. Из того длинного числа с мантиссой найдти и показать период.
> 2. Вернуть дробь обратно. float -> int/int
> Число можешь представлять как хочешь, - массив, строка, два числа, число и
> массив,...Эти условия ясны. Одно но (цитирую Вас - первоначальная постановка задачи):
"
Дополнительная задачка на лето :)Сие число является трансцендентным, но переводческим: 108.95(922438557293329077561442706670)
"Трансцендентное и периодическое число являются взаимоисключающими математическими понятиями. Поэтому в этих условиях задача не решаема (я не знаю откуда Вы взяли число и почему описали его, как трансцендентное, указав при этом период. я вижу то, что вижу). Подтвердите это или скажите, что я не прав (я это уже раза 3-и спрашивал - ответа нет).
> Строгих два правила: Для вычислений НЕ юзать внешние утилиты и НЕ использовать
> строковое сравнение.Условия решения задачи понятны. Ее формулировка не ясна для меня до сих пор (я честно уже немного запутался в постах) - можно повторить специально для меня (заранее спасибо) :).
>[оверквотинг удален]
> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.
> Если число не влазит в процессор, его режут по кускам и работают
> либо нудными циклическими алгоритмами со сдвигами, либо матричные
> преобразования. Если честно, ужасно лень :)
> 2. А чтоб сделать из числа с мантисой рациональную дробь,
> достаточно разделить на порядок, найти НОД и упростить дробь.
> напр.
> 108.12 == 108+0.12 == 108+(12/100) => НОД(12,100)= 4;
> 108.12 == 108+(3/25) => (108*25+3)/25 == 2703/25;
> ---v=108.12
i=0
f=0продемонстрируйте плз на bash выделение целой(i) и дробной(f) части из заданного значения(v) без использования строковых функций. на сервер ничего нет - только bash.
>[оверквотинг удален]
>> достаточно разделить на порядок, найти НОД и упростить дробь.
>> напр.
>> 108.12 == 108+0.12 == 108+(12/100) => НОД(12,100)= 4;
>> 108.12 == 108+(3/25) => (108*25+3)/25 == 2703/25;
>> ---
> v=108.12
> i=0
> f=0
> продемонстрируйте плз на bash выделение целой(i) и дробной(f) части из заданного значения(v)
> без использования строковых функций. на сервер ничего нет - только bash.снимаю вопрос - начальное ограничение было только СРАВНЕНИЕ строк не использовать.
>[оверквотинг удален]
> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.
> Если число не влазит в процессор, его режут по кускам и работают
> либо нудными циклическими алгоритмами со сдвигами, либо матричные
> преобразования. Если честно, ужасно лень :)
> 2. А чтоб сделать из числа с мантисой рациональную дробь,
> достаточно разделить на порядок, найти НОД и упростить дробь.
> напр.
> 108.12 == 108+0.12 == 108+(12/100) => НОД(12,100)= 4;
> 108.12 == 108+(3/25) => (108*25+3)/25 == 2703/25;
> ---30-Июн-12, 01:09: "- к решению второго пункта задачи при реальных реальных условиях я бы подошел с того, что степени 10 в знаменатель ставил для начала (для простоты)."
http://www.opennet.me/openforum/vsluhforumID9/9492.html#30
про интегралы на bash я конечно пошутил - решение задачи того не стоит.
> про интегралы на bash я конечно пошутил - решение задачи того не стоит.Определённые - методом прямоугольников, неопределённые - по частям методом прямоугольников. :)
>> про интегралы на bash я конечно пошутил - решение задачи того не стоит.
> Определённые - методом прямоугольников, неопределённые - по частям методом прямоугольников.
> :)Спасибо.
Но я вообще-то об эффективности решения говорил. Можно и на ассемблере - все от задачи зависит (про Вашу я уже спрашивал - реальная/не_реальная/обучение/что-то еще?)
> реальная/не_реальная/обучение/что-то еще?)Just for fun!!!
Тут шастуют преподы универов, тырят отседа примеры задач для студентов.
Можно гадость с подставой для обоих сделать. За одно и преподов обучим. :)Например мало кто юзает popd/push, -, shift, local, declare...
А ваще, как месть JavaScript хоцца написать MP3 плеер. :)
>> реальная/не_реальная/обучение/что-то еще?)
> Just for fun!!!
> Тут шастуют преподы универов, тырят отседа примеры задач для студентов.
> Можно гадость с подставой для обоих сделать. За одно и преподов обучим.
> :)
> Например мало кто юзает popd/push, -, shift, local, declare...
> А ваще, как месть JavaScript хоцца написать MP3 плеер. :)))))))))) повеселило ) - одобрямс )
>>> вопрос решен или нет? жду ответа преподавателя ).
>> или корректировки вопроса.
> 1. Число рациональное: 108+(12021/12532), но оно не влезет в целый типа баша,
> период 30 знаков, а чтоб определить повтор нужно хотя бы 61.
> Если число не влазит в процессор, его режут по кускам и работают
> либо нудными циклическими алгоритмами со сдвигами, либо матричные
> преобразования. Если честно, ужасно лень :)
> 2. А чтоб сделать из числа с мантисой рациональную дробь,
> достаточно разделить на порядок, найти НОД и упростить дробь.поиск НОД все равно = цикл
> напр.
> 108.12 == 108+0.12 == 108+(12/100) => НОД(12,100)= 4;
> 108.12 == 108+(3/25) => (108*25+3)/25 == 2703/25;
> ---
>> нужно посчитать (a-b)/c, чтобы дробная часть осталась.
> Ура, зачёты и курсовые начались... Будем разминать моск!!! :D
> Вспоминаем школу - деление столбиком. :)
>#!/bin/bash
> m=();
>Разминаем. Вот т-те твои "трансцедентные".
- - - 8< - - - ./b.sh
#!/bin/bash- - - >8 - - -div() {
local x c m s h p h1 i j
x=$1; c=$2
m=();
h1="${c//?/ }"
s="${h1:${#x}} $x / $c = $((x/c))"
h=$((x%c))
[ "$DBG" ] && echo "-- $x. $h $c"p=$c #at max.
i=0; j=0
while ((h!=0)); dolet h1=h h=h*10 ss=h/c h=h%c
let m[i]=ss
let mm[i]=h1[ "$DBG" ] && echo "++$ss j=$j i=$i h1=$h1"
((j>=i && i<p)) || break
let i++for((j=0; j<i && mm[j]!=h; j++)); do :; done
done[ "$DBG" ] && echo " ## j=$j i=$i h=$h h1^$h1"
((h==0&&i==0)) ||\
for (( l = 0; l <= i; l++ )); do
((l==0 )) && s="$s."
((l==j &&h!=0 )) && s="$s("
(( (l+10+2*${#c})d == 0 )) && s="$s"$'\n' #"words" sep.// ~64 chars
s="$s${m[$l]}"
((l==i-1 &&h!=0 )) && s="$s)" && break
doneecho "$s"
}#div 1365477 12532
#div 1 40;div 1 20;div 1 2;div 1 1;
#div 1 3;div 1 30;div 1 300
#div 1 7;div 1 70; div 1 700
#div 1 7;div 3 7;div 2 7; div 6 7; div 4 7; div 5 7
#div 1 9;div 1 90
#exit
[ "$1" -a "$2" ] && time div $1 $2Замечаешь, как для определения оооочень:) длинного периода достаточно массива (вектора? списка...) целых, каждое из которых не большне _делителя, а арифметика не выходит за пределы (делитель-1)*10. Отсюда и <=MAXINT/10.
> $ a.sh
> 108.9592243855729332907756144270667092243[...8<...][I]$ ./b.sh 1365477 12532
1365477 / 12532 = 108.95(922438557293329077561442706670)real 0m0.023s
user 0m0.020s
sys 0m0.004s[/I]|
[I]$ seq 1335 1337|xargs -n1 ./b.sh 1
1 / 1335 = 0.0(00749063670411985018726591760299625468164794)real 0m0.034s
user 0m0.036s
sys 0m0.000s
1 / 1336 = 0.000(7485029940119760479041916167664670658682634
7305389221556886227544910179640718562874251497005988023952095808
38323353293413173652694610778443113772455089820359281437125)real 0m0.269s
user 0m0.248s
sys 0m0.020s
1 / 1337 = 0.(0007479431563201196709050112191473448017950635
7516828721017202692595362752430815258040388930441286462228870605
8339566192969334330590875093492894540014958863126402393418100224
3829468960359012715033657442034405385190725504861630516080777860
8825729244577412116679132385938668661181750186985789080029917726
2528047868362004487658937920718025430067314884068810770381451009
7232610321615557217651458489154824233358264771877337322363500373
9715781600598354525056095736724008975317875841436050860134629768
1376215407629020194465220643231114435302916978309648466716529543
754674644727)real 0m2.629s
user 0m2.528s
sys 0m0.100s[/I]Когда './b.sh 1 31337' чё-т надолго задумался, основная процедура была переписана на awk
(...8<... : потеряное при этом нарезание на стороки заменено самоцензурой):[I]$ seq 1335 1337|xargs -n1 ./c.sh 1
1 / 1335 = 0.0(00749063670411985018726591760299625468164794)real 0m0.003s
user 0m0.000s
sys 0m0.000s
1 / 1336 = 0.000(748502994011976047904191616766467065868263473053892215...8<...real 0m0.013s
user 0m0.008s
sys 0m0.000s
1 / 1337 = 0.(000747943156320119670905011219147344...8<...16529543754674644727)real 0m0.109s
user 0m0.108s
sys 0m0.000s.
$ ./c.sh 1 31337
...8<...
real 5m3.147s
user 5m2.927s
sys 0m0.028s[/I]##$ ./b.sh 1 31337
##...8<...
Обобвал после :
$ top |grep b.sh
...
[I] 6789 yya 20 0 6472 3536 1108 R 100 0.1 51:48.86 b.sh[/I]
Неудачи преследовалии.> - - - 8< - - - ./b.sh
> (( (l+10+2*${#c})d == 0 )) && s="$s"$'\n'
>- - - >8 - - -fixxed:
(( (l+10+2*${#c})%64 == 0 )) && s="$s"$'\n'
>>> нужно посчитать (a-b)/c, чтобы дробная часть осталась.
>> Ура, зачёты и курсовые начались... Будем разминать моск!!! :D
>> Вспоминаем школу - деление столбиком. :)
> Разминаем. Вот т-те твои "трансцедентные".Молодец, ты победил, твоя лень меньше моей :)