Сообщение Re[2]: Совсем чуть-чуть от 13.03.2015 7:27
Изменено 13.03.2015 8:05 Warlock78
//=============================================================================
inline int PositionsSum(int n)
{
int sum = 0;
while (n)
{
sum += n % 10;
n /= 10;
}
return sum;
}
//=============================================================================
inline int FindMaxPositionsSumMaxNumber(const int x)
{
if (x < 10)
return x;
int pos = 10;
for (int i = x; i > 1000; i /= 10)
pos *= 10;
int res = x / pos * pos - 1;
return PositionsSum(x) >= PositionsSum(res) ? x : 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;
}
//=============================================================================
//=============================================================================
#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 x)
{
if (x < 10)
return x;
int pos = 10;
for (int i = x; i > 1000; i /= 10)
pos *= 10;
int res = x / pos * pos - 1;
int pos2 = pos * 10;
int res2 = x / pos2 * pos2 - 1;
res = PositionsSum(res) >= PositionsSum(res2) ? res : res2;
return PositionsSum(x) >= PositionsSum(res) ? x : 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;
}
//=============================================================================