110 likes | 421 Views
Всероссийская олимпиада по информатике. Школьный этап. Разбор задачи №2 «Покер». 2013г. Тумайкина Ю.Н., МБОУ «СОШ с.Терновка ». Условие:.
E N D
Всероссийская олимпиада по информатике. Школьный этап. Разбор задачи №2 «Покер» 2013г. Тумайкина Ю.Н., МБОУ «СОШ с.Терновка»
Условие: Известное казино хочет поправить свое пошатнувшееся финансовое положение, установив новую модель игровых автоматов "Покер" улучшенного дизайна. Игроку в покер необходимо собрать 5 карт таким образом, чтобы среди них было максимальное количество совпадающих (лучшая комбинация – все пять карт совпадает, а худшая – все различны). К сожалению, главный программист казино недавно неожиданно разбогател, уволился и уехал на Багамы. Без него казино не может решить, как по выпавшему набору карт определить размер выигрыша клиента. Помогите казино справиться с этой задачей. Формат входных данных Программа получает на вход 5 целых положительных чисел x1, x2, x3, x4, x5, не превосходящих 109.
Условие: Формат выходных данных Программа должна вывести на экран одну из следующих строк: pokerесли все 5 чисел равны fourof a kindесли ровно 4 числа равны между собой fullhouseесли три из пяти чисел равны между собой и два оставшихся числа равны threeof a kindесли ровно три числа равны twopairsесли есть две пары равных чисел onepairесли только два числа равны alldifferentесли все числа различны Пример Входные данные 7 3 7 7 3 Выходные данные fullhouse
Основные моменты: • Входные данные храним в массиве. • Организовываем два цикла, для сравнения элементов массива на равенство (оба цикла от 1 до 5). • Во внутреннем цикле: если элементы равны, то увеличиваем счетчик; • Во внешнем цикле: суммируемзначения счетчика. • В зависимости от значения суммы, применяя оператор выбора (case of), выводим результат.
Рассмотрим на примере: 9 8 9 9 9 9 9 8 9 9 – элемент массива – значение счетчика 4 1 4 – значение суммы +1 +4 4 +4 +4=17
Аналогично: 9 8 9 8 7 8 9 8 9 7 – элемент массива Сумма: 2+2+2+2+1=9 9 8 8 9 9 Сумма: 3+2+2+3+3=13
Основные моменты: В связи с тем, что каждый элемент сравнивается с 1 по 5 включительно, значения счетчика могут быть следующими: 5 – если все пять цифр одинаковые (сумма будет 5+5+5+5+5 =25); 4 – если число повторяется 4 раза (сумма будет 4+4+4+4+1=17); 3 – если число повторяется трижды и 2 если дважды. При различных комбинациях пар и троек получаем следующие суммы: 3+3+3+2+2=13 (фуллхаус); 2+2+2+2+1=9 (две пары); 3+3+3+1+1=11(одна тройка); 2+2+1+1+1=7 (одна пара).
Текст программы: program poker; var x: array [1..5] of longint; i,j,s,k:integer; begin for i:=1 to 5 do read(x[i]); s:=0; for j:=1 to 5 do begin k:=0; for i:=1 to 5 do if x[j]=x[i] then k:=k+1; s:=s+k; end; case s of 25: writeln('poker'); 17: writeln('four of a kind'); 13: writeln('full house'); 9: writeln('two pairs'); 11: writeln('three of a kind'); 7: writeln('one pair') else writeln('all different') end; end.