М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Getara907
Getara907
31.05.2022 17:47 •  Информатика

Каждый год студентам необходимо поменять пароль. C нового года к паролю стали предъявлять новые требования. Длинна пароля должна быть больше или равна 10 символам В нем должна быть хотя бы одна цифра В нем должен быть символ ‘!’, ‘_’ или ‘@ Напишите функцию checker(password), которая принимает на вход один параметр строку, гипотетический пароль и проверяет его на соответствие этим требованиям и возвращает True, если пароль подходит и False, если нарушено хотя бы одно из условий.

👇
Ответ:
dashoostik
dashoostik
31.05.2022
begin var f:Predicate<string>:= s-> (s.Length>=10) and (s.Any(c->c.IsDigit)) and (s.Any(c->(c='!')or(c='_')or(c='@'))); f(ReadString).Printend.

Пример работы:


Каждый год студентам необходимо поменять пароль. C нового года к паролю стали предъявлять новые треб
Каждый год студентам необходимо поменять пароль. C нового года к паролю стали предъявлять новые треб
4,4(87 оценок)
Открыть все ответы
Ответ:
micser2017
micser2017
31.05.2022

even, odd = [0], [0]

pointer = 0

prev_0 = True

answer = 0

n = int(input())

for i in range(n):

   num = int(input())

   if num == 0 and not(prev_0):

       even.append(0)

       odd.append(0)

       pointer += 1

       prev_0 = True

   elif num == 0 and prev_0:

       continue

   else:

       prev_0 = False

       if num % 2 == 0:

           even[pointer] += 1

       else:

           odd[pointer] += 1

for i in range(len(even)):

   for j in range(i+1, len(even)):

       answer += even[i] * even[j]

for i in range(len(odd)):

   for j in range(i+1, len(odd)):

       answer += odd[i] * odd[j]

print(answer)

Объяснение:

Разделим последовательность на своеобразные блоки, где разделители — это один или несколько подряд идущих нулей. В каждом блоке посчитаем количество чётных и нечётных чисел. Сумма чётна, если оба числа в паре либо чётны, либо нечётны. Значит, число нужных пар в некоторых двух блоках — это произведение количества чётных в первом блоке и во втором блоке + произведение количества нечётных в первом блоке и во втором блоке. Тогда ответом будет сумма всех возможных таких попарных произведений среди всех блоков.

При реализации программы алгоритм будет выглядеть так: создадим два массива, где будем сохранять количество чётных и нечётных чисел в каждом блоке. Блоком будет элемент массива. Также создадим указатель, чтобы чётные и нечётные числа считались в нужный блок. Если встречается 0 и до этого нулей не было, нужно создать новый блок, то есть добавить к массивам новую ячейку и переместить указатель на неё. Если же нули до этого нуля были, то просто пропустим данный шаг, чтобы не захламлять массив (поэтому стоит объявить флаг prev_0 именно как True, чтобы пропустить нули в начале, если они есть). Как только встречается положительное число, увеличиваем число в нужном блоке на один. После окончания ввода считаем все возможные попарные произведения в массиве чётных и нечётных чисел.

Программа эффективна по памяти, так как размеры массивов ограничены числом N ≤ 10000, а также эффективна по времени, так как все данные считываются в один проход, а каждый из последних циклов сделает меньше 10000² операций, что для компьютера довольно немного.

4,6(81 оценок)
Ответ:
riborg250000000
riborg250000000
31.05.2022

Простейшее задание

Объяснение:

#include <iostream>

#include <functional>

#include <string>

#include <vector>

 

struct converter

{

  std::function<double(double)> function;

  std::string to;

};

 

int main()

{

  std::vector<converter> table =

  {

     {[](double d) { return d; }, "kg"},

     {[](double d) { return d / 1000 / 1000; }, "mg"},

     {[](double d) { return d / 1000; }, "g"},

     {[](double d) { return d * 100; }, "cnt" },

     {[](double d) { return d * 1000; }, "tones" }

  };

  int ind = 0;

  std::cin >> ind;

  ind -= 1;

  if (ind >= 0 && ind < table.size())

  {

     int m = 0;

     std::cin >> m;

     const converter& current = table[ind];

     std::cout << "Result of converting " << m << " " << current.to << " is " << current.function(m) << " kg" << std::endl;

  }

}

4,8(30 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ