Задача. Дана рациональная дробь [latex]\frac{m}{n}[/latex]. Запишите её в виде десятичной дроби с точностью [latex] k[/latex] знаков после запятой.
Входные данные
В одной строке записано 3 числа [latex]m,n,k[/latex]. [latex]{{0}<{m,n}\leq{100}}[/latex], [latex]{{0}\leq{k}\leq{1000}}[/latex].
Выходные данные
Вывести [latex]k[/latex] точных значащих цифр после десятичной точки искомого числа.
Алгоритм решения:

Деление уголком
Код программы
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> int main() { int m, n, k; std::cin >> m >> n >> k; std::cout << m / n << "."; for (int i = 0; i < k; ++i) { m = (m % n) * 10; std::cout << m / n; } } |
Проверка
- (По условию задачи):
Ввод: | # | Вывод: |
m | 1 | 0.500 |
n | 2 | |
k | 3 |
2.
Ввод: | # | Вывод: |
m | 2 | 0.66666666666666666666 |
n | 3 | |
k | 20 |
3.
Ввод: | # | Вывод: |
m | 9 | 1.000000000 |
n | 9 | |
k | 9 |
4.
Ввод: | # | |
m | 1 | 0.33333333333333333333 |
n | 3 | |
k | 20 |
Здесь можно посмотреть решение на ideone.com
Здесь можно посмотреть условие задачи на e-olymp.com
Спасибо, Игорь Евгеньевич, что указали мне на ошибки, я их исправила
Игорь Евгеньевич, я исправила ошибки, проверьте, пожалуйста
Исправила работа с учетом Ваших замечаний, проверьте, пожалуйста
У Вас точно такое же решение. Только без округления.
В какой-то момент авторы задачи откорректировали тесты и теперь округлять последний знак уже не нужно.