Вычислить отношение произведения цифр натурального числа к их сумме

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2015
In
Первая строка стандартного потока ввода содержит количество тестов Т.
Каждый тест - заданное в отдельной строке натуральное N, не превышающее 2 ⋅ 109.
Out
Для каждого теста выведите в отдельную строку искомое отношение с точностью до 3-х цифр после десятичной точки.
Exm
_In__________Out____
2       |2.000     |
36      |2.000     |
63      |          |
--------------------
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    int main(){

    long long int T, i, j;
    long long int n, sum, mult;
    long long int h, a;
    long double k;
    float r;

    cin >> T;
    for (i = 0; i < T; i++) {
        cin >> n;
        sum = 0;
        mult = 1;
        while (n > 0){
            sum = sum + (n % 10);
            mult = mult * (n % 10);
            n = n / 10;
        }
        k = mult / sum;
        //r = mult / sum;
        printf("%.3lf\n", k);
        //printf("%.3lf\n", r);
        //cout << sum << endl;
        //cout << mult << endl;
    }
    return 0;
}

_In__________Out____
63      |2.000     |
36      |2.000     |
18      |0.000     |
85      |3.000     |
--------------------

В чем проблема?!
Почему отношение 8 к 9 = 0?

Ответы

▲ 1Принят

Переменная k у тебя double, но вот mult и sum - int. При делении остаток отбрасывается, а при делении меньшего на большее число и вовсе в 0 обращается. Рецепт: static_cast<double>( mult ). Или sum, но привести ты должен один из них.