profile
Размещено 6 лет назад по предмету Информатика от MrMiner1

Язык: C++
Реализовать программу с форматированным определенным образом выводом. Допустим, выводим результат деления a на b:
Входные данные:
3 2
Вывод: 1.5
Входные данные:
8 9
Вывод: frac{8}{9}
По сути: если получившееся число можно представить в виде десятичной дроби без периода, то выводим в виде десятичной. Если нет (например, 8/9=8,8(8)) - в виде обыкновенной.

  1. Ответ на вопрос
    Ответ на вопрос дан igorShap

    Привожу 2 варианта решения.

    Вариант 1: файл 1.cpp

    Решение основано на обыкновенном вычислении периода дроби (для дробей, имеющих конечную десятичную запись(например, 1/2=0,5), период вычисляется для формы с нулем в периоде(то есть для 1/2 берется форма 0,5(0))) с помощью деления столбиком.

    Замечание: сам алгоритм деления в столбик я писал достаточно давно, и для других программ, поэтому его реализация в данном коде может быть неоптимальной (в плане памяти или кол-ва операций), однако он работает.

    Вариант 2: файл 3.cpp

    Если немного углубиться в математику, можно найти теорему, по которой дробь, представленная в виде m/n , где НОД(m, n) = 1, имеет конечную десятичную запись тогда и только тогда, когда ее знаменатель n = 5^{a_1}*2^{a_2}; a_1, a_2in Z, a_1, a_2geq0. Тогда достаточно сократить числитель и знаменатель на общие множители, а далее выполнить проверку знаменателя.

    1. Ответ на вопрос
      Ответ на вопрос дан igorShap
      Я подумаю, можно ли это исправить без ввода строк и длинной арифметики. Пока что ничего в голову не идет
    2. Ответ на вопрос
      Ответ на вопрос дан igorShap
      Да, по поводу 2^80 - вроде бы это уже выход за пределы long long
    3. Ответ на вопрос
      Ответ на вопрос дан MrMiner1
      Да. long long - чуть больше, чем 9*10^18
    4. Ответ на вопрос
      Ответ на вопрос дан igorShap
      Там будет около 25 цифр, а у long long не более 19
    5. Ответ на вопрос
      Ответ на вопрос дан MrMiner1
      Ну, пока что еще не возникало в задачах решений, требующих более, чем 10/2^40. Так что сейчас первого решения достаточно.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.