Re[2]: Совсем чуть-чуть
От: Warlock78  
Дата: 13.03.15 07:27
Оценка:
#include <stdio.h>


inline int PositionsSum(int n)
{
    int sum = 0;
    while (n)
    {
        sum += n % 10;
        n /= 10;
    }
    return sum;
}


inline int FindMaxPositionsSumMaxNumber(const int Num)
{
    if (Num < 10)
        return Num;

    int res = 0;
    int res_sum = 0;

    int pos = 10;

    for (int i = Num; i >= 10; i /= 10)
    {
        int t = Num / pos * pos - 1;
        int t_sum = PositionsSum(t);

        if (t_sum > res_sum)
        {
            res     = t;
            res_sum = t_sum;
        }

        pos *= 10;
    }

    return PositionsSum(Num) >= res_sum ? Num : res;
}


int main(void)
{
    freopen("input.txt",  "r", stdin);
    freopen("output.txt", "w", stdout);

    int num = 0;
    scanf("%d", &num);

    printf("%d\n", FindMaxPositionsSumMaxNumber(num));

    return 0;
}
Отредактировано 13.03.2015 12:24 Warlock78 . Предыдущая версия . Еще …
Отредактировано 13.03.2015 8:05 Warlock78 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.