олимпиада по информатике 5. Agar.io
Ограничение времени 1 секунда
Ограничение памяти 512Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В многопользовательской игре Agar.io игроки управляют бактериями. У каждой бактерии есть размер — целое положительное число. Если встречаются две бактерии разного размера, то бактерия большего размера поглощает меньшую бактерию. При этом меньшая бактерия исчезает, а размер большей бактерии увеличивается на размер меньшей бактерии. Если встречаются две бактерии равного размера, то ничего не происходит. Побеждает игрок, чья бактерия останется на игровом поле одна.
В игре участвуют n игроков, вам даны размеры их бактерий. Определите, какие из игроков имеют возможность выиграть в этой игре.
Формат ввода
Программа получает на вход целое число n, 1≤ n≤ 105 — количество игроков. Следующие n строк содержат по одному числу ai — размеры бактерий, 1≤ ai≤ 109. Числа ai заданы в порядке неубывания.
Формат вывода
Программа должна вывести n чисел равных «0» или «1», по одному числу в строке. Если i-е число равно 0, то это означает, что i-й игрок (размер бактерии которого первоначально был равен ai) ни при каких обстоятельствах не может выиграть в этой игре. Если i-е число равно 1, то это означает, что i-й игрок имеет возможность выиграть в этой игре.
Пример
Ввод Вывод
4
1
1
3
4
0
0
1
1
Примечания
В примере из условия 4 бактерии размерами 1, 1, 3, 4. Бактерии размером 1 никого не могут съесть, поэтому не могут выиграть. Бактерия размером 4 может съесть всех. Бактерия размером 3 может съесть по очереди две бактерии размером 1. Тогда её размер станет 5, после этого она сможет съесть бактерию размером 4 и выиграть. ответ: 0, 0, 1, 1.
|
Решение, правильно работающее только для случаев, когда n≤ 100 и все ai≤ 106, будет оцениваться в
#include <iostream>
using namespace std;
int main()
{
bool check;
int number;
cin >> number;
if (number > 0 && number < 10)
{
cout << "нет";
return 0;
}
while (number > 0)
{
int last_number = number % 10;
number /= 10;
if (last_number < number % 10)
{
check = false;
break;
}
check = true;
}
if (check)
{
cout << "да";
}
else
{
cout << "нет";
}
}
Объяснение:
#include <iostream> // Библиотека ввода - вывода
using namespace std; // Пространство имен
int main()
{
bool check; // Переменная check логического типа (( хранит true - ИСТИНА // false - ЛОЖНО ))
int number; // Переменная, хранящая число, вводимое с клавиатуры
cin >> number; // Вводим число с клавиатуры
if (number > 0 && number < 10) // Если number находится в диапазоне [1..0]
{
cout << "нет"; // Выводим нет
return 0; // Заканчиваем программу
}
while (number > 0) // Пока значение переменной number > 0
{
int last_number = number % 10; // Берем последнюю цифру числа
number /= 10; // Удаляем ее
if (last_number < number % 10) // Если последняя цифра числа < следующей цифры
{
check = false; // check = ложно (false)
break; // Выходим из цикла
}
check = true; // Если нет, то check = истина (true)
}
if (check) // Если check = истина (true)
{
cout << "да"; // Выводим да
}
else // Иначе
{
cout << "нет"; // Выводим нет
}
}
def letter(text):
text=text.split('.')
text=text[0]
text=text.split()
text=''.join(text)
text=text.upper()
d={}
for i in set(text):
d[i]=text.count(i)
maxim=max(d.values())
s=0
for k in d.values():
if k==maxim:
s+=1
if s==1:
for j in d:
if d[j]==max(d.values()):
return(f'{j} {d[j]}')
else:
qq={}
for z in d:
if d[z]==max(d.values()):
qq[z]=max(d.values())
for l in qq:
if l==min(qq.keys()):
return(f'{l} {qq[l]}')
def runner():
print(letter('It is not a simple task. Yes!'))
print(letter('A'))
print(letter('Bb Aa Cc A'))
runner()
Объяснение:
Объяснение писать долго и неудобно) но если кому интересно, могу рассказать, например, через вк или дискорд. Напишите мне в личку