Решение задачи Наилучший делитель с Acmp

Без пояснения   Просмотров: 129


Будем говорить, что число a лучше числа b, если сумма цифр a больше суммы цифр числа b, а в случае равенства сумм их цифр, если число a меньше числа b. Например, число 124 лучше числа 123, так как у первого из них сумма цифр равна семи, а у второго – шести. Также, число 3 лучше числа 111, так как у них равны суммы цифр, но первое из них меньше.

Дано число n. Найдите такой его делитель (само число n и единица считаются делителями числа n), который лучше любого другого делителя числа n.

Код

#include <iostream>
using namespace std;
 
unsigned SummDigits(unsigned k)
{
    unsigned r = 0;
    while(k) {
        r += k % 10;
        k /= 10;
    }
    return r;
}
 
int main()
{
    int n, d = 1, t = 1;
    cin >> n;
    while(d <= n / d) {
        if(!(n % d)) {
            if(SummDigits(t) < SummDigits(d))
                t = d;
            else
                if(SummDigits(t) == SummDigits(d))
                    t = t < d ? t : d;
            if(SummDigits(t) < SummDigits((n / d)))
                t = (n / d);
            else
                if(SummDigits(t) == SummDigits((n / d)))
                    t = t < d ? t : (n / d);
        }
        ++d;
    }
    cout << t;
    return 0;
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться