Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Скажите пожалуйста в чем ошибка:

сорри не скажу Ученик (54), на голосовании 6 месяцев назад
Пусть есть число, где сумма всех цифр слева от середины равна сумме всех цифр справа. Такое число называется сбалансированным. Если количество цифр в числе нечётное, то бери суммы слева и справа от средней цифры.

Дано целое положительное число N. Если оно является сбалансированным, то выведи 1, иначе 0.

Ввод: 123321; Вывод 1. Ввод: 13531; Вывод 1; Ввод: 1231; Вывод 0; Ввод: 101; Вывод 1.

n=int(input())
n1_list=str(n)
sum1=0
sum2=0

for i in range(0,len(n1_list)//2):

sum1=sum1+int(n1_list[i])


for i in range(len(n1_list)//2,len(n1_list)):

sum2=sum2+int(n1_list[i])


if sum1==sum2:
print(1)
else:
print(0)
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445813) 7 месяцев назад
Ошибка в незнании математики и какой-то мутной работе со строками, которые тут нафиг не уперлись. Вот зачем ты превращаешь введенную строку в число, а потом опять в строку, в чем глубинный смысл всего этого мельтешения?

Код на C#, раз уж вопрос в категории C#:

 int n = int.Parse(Console.ReadLine()); 
int DigitCount = (int)(Math.Log10(n) + 1);
int LeftDivisor = Enumerable.Range(1, DigitCount - 1).Aggregate(1, (x, y) => x *= 10);
int Left = 0;
int Right = 0;
for (int i = 0; i <= DigitCount >> 1; i++)
{
Left += n / LeftDivisor;
Right += n % 10;
n = n % LeftDivisor / 10;
LeftDivisor /= 100;
}
Console.WriteLine(Right == Left);
сорри не скажуУченик (54) 7 месяцев назад
извините забыл уточнить что язык питон
Jurijus Zaksas Искусственный Интеллект (445813) Для питона есть своя категория. Но это не принципиально. Как видишь, у меня никаких строк и массивов нет. И тебе они тоже не нужны.
Похожие вопросы