Задача с сайта e-olymp #931.
Вычислить отношение произведения цифр натурального числа к их сумме.
Входные данные
Натуральное число n, не превышающее 2·109.
Выходные данные
Вывести отношение произведения цифр числа n к их сумме с 3 десятичными цифрами.
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int SumOfDigits (int n) { int s = 0; while (n) { s+=n%10; n/=10; } return s; } double MultOfDigits (int n) { double m = 1; while(n) { m*=n%10; n/=10; } return m; } int main() { int n; cin>>n; cout<<fixed<<setprecision(3)<<MultOfDigits(n)/SumOfDigits(n); return 0; } |
Для решения данной задачи я вывел две функции, до главной, а именно — функцию умножения цифр натурального числа и функцию сложения цифр натурального числа, которыми воспользуемся в дальнейшем.
В главной же функции мы выводим отношение произведения цифр к их сумме, округленное до третьего знака после запятой.
Более краткий вариант программы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int n, sum = 0; double k = 0, mult = 1; cin>>n; while(n!=0) { k=n%10; sum+=k; mult*=k; n/=10; } cout<<fixed<<setprecision(3)<<mult/sum; return 0; } |
Удивлен, что эта задача находится в разделе линейных программ. Возможно автор предполагал, что будет заведено 10 переменных и в каждую запишется очередная цифра. Но я сделал с циклом пока n положительно.
Возникли проблемы с выводом чисел только в фиксированном формате (а не в научном — мантисса и порядок). Пришлось выполнить настройку cout по этой статье.
Да, я сегодня отредактировал вывод с помощью precision и программа была засчитана
Засчитано. Только добавьте ссылку на код решения на сайте ideone.com.
Поскольку по моему недосмотру Вам досталась слишком сложная для первой попытки задача, я засчитал за неё 20 баллов.