Имеет смысл воспользоваться методом "дихотомии" (деления пополам).
Если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере?
Поэтому принимаем такое решение. Мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. Затем задаем вопрос: загаданный ученик находится в первой кучке? По результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. Процесс повторяем пока не останется одна карточка. Аналогично поступаем с датами рождения.
Тогда количество вопросов определится, как степень числа 2, дающая число, не меньшее количества учеников (дней рождения).
2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов.
2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов.
В сумме потребуется задать не более 9+10 = 19 вопросов.
Конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
1.
var
a : integer;
begin
write('введите число: ');
readln(a);
if a mod 2 = 0 then writeln('четное') else writeln('нечетное');
end.
2.
var
x, y : integer;
begin
write('введите x=');
readln(x);
y := x;
writeln('y=', y);
end.
во второй задаче не было указано как считать Y поэтому я просто сделал его равным X. нужную формулу напишешь сам
//Pascal ABC.NET 3.1 сборка 1256
Var
ars:array[1..12] of string:=('января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
s:string;
begin
read(s);
if s[1]='0' then delete(s,1,1);
write(copy(s,1,pos('.',s)-1),' ');
delete(s,1,pos('.',s));
write(ars[strtoint(copy(s,1,pos('.',s)-1))],' ');
delete(s,1,pos('.',s));
write(s,' года');
end.
Пример ввода:
15.10.2012
Пример вывода:
<span>15 октября 2012 года</span>
1) Ответ 6 (путь а-б-д-е)
2)Ответ 8 (путь а-ц-д-е)
3)вторая таблица (а-б-д)
#include <iostream>
#include <vector>
int main()
{
std::vector<int>a(10);
for(int i = 0 ; i != 10 ; ++i)
{
std::cin>>a[i];
}
for(auto b : a)
{
if(b>0 && b%2==0)
{
std::cout<<b<<" ";
}
}
return 0;
}