Var i,n,s:byte; //Здесь мы описываем переменные i- флаг, n - наше число N, s- переменная "деления" label l1; // Здесь мы begin l1:i:=0; //Установка метки на начало программы и установка флага на первоначальное значение - НЕТ repeat //проверка N на подлинность if i=1 then write('Не верный ввод данных!Повторите ввод:') else write('Введите номер N:'); // Условие при котором в первый раз выводится предложение где нас просят ввести N, а если же мы её ввели не правильно выводится ошибка и опять нас просят ввести N так продолжается пока мы не введем правильный N readln(n); i:=1; // Установка флага - ДА untill (n>=1) and (n<100); // Ограничения N writeln('Ваше множество:');// Вывод множества; for i:=n to 99 do // из условия следует что числа будут в диапазоне от 1 до 99 т.к они натуральные и двухзначные begin s:=i mod 11; //Условие при котором Цифры повторяются т.е. делятся на 11 if (s<>0) then write(i,'; '); // Проверка условия выше; end; writeln; write('Повторить программу?(1-Да, 0-Нет)-');// Предложение о том сделать ли еще раз программу read(i); if (i=1) then goto L1; // опять же установка флага и переход к метке L1; если же условие не выполняется, то конец программы end.
Пусть имеется a штук первого типа, b штук второго типа, а требуется взять n пирожных.
Пусть p - количество пирожных первого типа, которые взяли, q - количество пирожных второго типа, которые взяли. Тогда должны выполняться условия:
1) p+q = n
2) 0 <= p <= a
3) 0 <= q <= b
Рассмотрим третье неравенство. q заменим на n-p с учетом первого равенства. После этого преобразуем полученное неравенство.
0 <= n-p <= b
-b <= p-n <= 0
n-b <= p <= n
С учетом второго неравенства, получим окончательные границы для p:
max(0, n-b) <= p <= min(a, n).
Поскольку фиксированное значение p однозначно определяет q, то искомое количество выбрать пары (p, q) равно числу выбрать p - это количество целых чисел на отрезке [max(0, n-b); min(a, n)], то есть ans = min(a, n) - max(0, n-b) + 1. Может так получиться, что ответ неположителен - это из-за того, что выбрать пирожные вообще нельзя. Поэтому нужно и этот момент подкорректировать: ans = max(0, min(a, n) - max(0, n-b) + 1).
i,n,s:byte; //Здесь мы описываем переменные i- флаг, n - наше число N, s- переменная "деления"
label l1; // Здесь мы
begin
l1:i:=0; //Установка метки на начало программы и установка флага на первоначальное значение - НЕТ
repeat //проверка N на подлинность
if i=1 then
write('Не верный ввод данных!Повторите ввод:')
else
write('Введите номер N:'); // Условие при котором в первый раз выводится предложение где нас просят ввести N, а если же мы её ввели не правильно выводится ошибка и опять нас просят ввести N так продолжается пока мы не введем правильный N
readln(n);
i:=1; // Установка флага - ДА
untill (n>=1) and (n<100); // Ограничения N
writeln('Ваше множество:');// Вывод множества;
for i:=n to 99 do // из условия следует что числа будут в диапазоне от 1 до 99 т.к они натуральные и двухзначные
begin
s:=i mod 11; //Условие при котором Цифры повторяются т.е. делятся на 11
if (s<>0) then write(i,'; '); // Проверка условия выше;
end;
writeln;
write('Повторить программу?(1-Да, 0-Нет)-');// Предложение о том сделать ли еще раз программу
read(i);
if (i=1) then goto L1; // опять же установка флага и переход к метке L1; если же условие не выполняется, то конец программы
end.
n = int(input())
a = int(input())
b = int(input())
ans = max(0, min(a, b) - max(0, n-b) + 1)
print(ans)
Объяснение:
Пусть имеется a штук первого типа, b штук второго типа, а требуется взять n пирожных.
Пусть p - количество пирожных первого типа, которые взяли, q - количество пирожных второго типа, которые взяли. Тогда должны выполняться условия:
1) p+q = n
2) 0 <= p <= a
3) 0 <= q <= b
Рассмотрим третье неравенство. q заменим на n-p с учетом первого равенства. После этого преобразуем полученное неравенство.
0 <= n-p <= b
-b <= p-n <= 0
n-b <= p <= n
С учетом второго неравенства, получим окончательные границы для p:
max(0, n-b) <= p <= min(a, n).
Поскольку фиксированное значение p однозначно определяет q, то искомое количество выбрать пары (p, q) равно числу выбрать p - это количество целых чисел на отрезке [max(0, n-b); min(a, n)], то есть ans = min(a, n) - max(0, n-b) + 1. Может так получиться, что ответ неположителен - это из-за того, что выбрать пирожные вообще нельзя. Поэтому нужно и этот момент подкорректировать: ans = max(0, min(a, n) - max(0, n-b) + 1).