10929. Ты можешь сказать 11
По заданному натуральному числу n определить, делится ли оно нацело на
11.
Вход. Каждая
строка содержит натуральное число, десятичная запись которого имеет не более
1000 цифр. Последняя строка содержит 0 и не обрабатывается.
Выход. Для каждого теста вывести
сообщение, делится ли n на 11 в
формате, приведенном ниже.
112233
30800
2937
323455693
5038297
112234
0
Пример выхода
112233 is a multiple of 11.
30800 is a multiple of 11.
2937 is a multiple of 11.
323455693 is a multiple of 11.
5038297 is a multiple of 11.
112234 is not a multiple of 11.
математика
Число делится на 11 тогда и
только тогда, когда разность суммы цифр, стоящих на нечетных позициях и суммы
цифр на четных позициях, делится на 11.
Для каждого теста вычисляем
указанную разность и проверяем, делится ли она на 11.
Рассмотрим число 323455693. Сумма
цифр на нечетных позициях равна 3 + 3 + 5 + 6 + 3 = 20, сумма цифр на четных
позициях равна 2 + 4 + 5 + 9 = 20. Разница сумм равна 20 – 20 = 0, что делится
на 11. Следовательно, число 323455693 делится на 11.
Входное число храним в массиве s.
char s[1001];
Читаем входные данные, пока не
встретится строка, содержащая ‘0’. Переменная a содержит сумму цифр, стоящих на четных позициях, переменная b – на нечетных. Первая цифра входного числа хранится в s[0]. Если
индекс массива i нечетный, то цифра
s[i] прибавляется к a, иначе – к b). Изначально a = b = 0.
while(scanf("%s",s),strcmp(s,"0"))
{
a = b = 0; len = (int)strlen(s);
for(i = 0; i
< len; i++)
{
if (i % 2)
a += s[i] - '0';
else b +=
s[i] - '0';
}
Выводим результат. Если разность a – b делится на 11, то
исходное число делится на 11.
printf("%s is
",s);
if ((a - b) %
11) printf("not ");
printf("a
multiple of 11.\n");
}