Эмо бой не проходит 14 тест
A. Эмо бой
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
При регистрации на портале каждый эмо бой обязан придумать себе никнейм. Никнейм должен быть не короче восьми символов, содержать в себе хотя бы одну цифру, и хотя бы по одной заглавной и прописной английской букве.
Формат ввода Вводится никнейм — последовательность букв и цифр без пробелов. Длина строки не превосходит 100 символов.
Формат вывода Выведите «YES», если ник подходит для эмо боя, и «NO» — в противном случае.
Пример 1
Ввод
altushka
Вывод
NO
Пример 2
Ввод EmObOy2005
Вывод
YES
#include <iostream>
#include <string>
bool nik_approved(const std::string& s)
{
if (s.empty())
return false;
else
{
bool len_8 = s.length() > 7, dig = false, small_let = false, cap_letter = false;
for (auto i : s)
if (i >= '0' && i <= '9')
{
dig = true;
break;
}
for (auto i : s)
if (i >= 'a' && i <= 'z')
{
small_let = true;
break;
}
for (auto i : s)
if (i >= 'A' && i <= 'Z')
{
cap_letter = true;
break;
}
return len_8 && small_let && cap_letter;
}
}
int main()
{
std::string s;
std::cin >> s;
if(nik_approved(s))
std::cout << "YES";
else
std::cout << "NO";
return 0;
}
Задача проще некуда, но не проходит 14й тест! Что тут не так? Или нужно проверять что входная строка не содержит управляющих символов и тп, а только обычные буквы и символы?
Ответы (1 шт):
По-моему, в
return len_8 && small_let && cap_letter;
стоит добавить && dig
return len_8 && small_let && cap_letter && dig;
И работать над вопросом хотя бы 5 минут, прежде чем бежать спрашивать на ruSO...