В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
элина20072
элина20072
26.08.2021 20:51 •  Информатика

Ввести с клавиатуры два целых числа больших 100. Найти и вывести вторую (с начала, слева) цифру первого числа. Найти и вывести среднее арифметическое целых делителей второго числа.

Показать ответ
Ответ:
котик926
котик926
05.01.2020 05:00

(см. объяснение)

Объяснение:

Пункт A:

Пусть во второй куче x камней. Тогда стратегия примет вид:

(8; x)⇒(8; 3x)

По условию 8+3x≥68 ⇒ x≥20.

Так как нам нужно найти минимальное значение, то берем число 20.

Пункт Б:

Здесь многие рекомендуют просто подбирать. Но если вы все время боитесь, что найдете подходящее значение S, а оно не окажется минимальное, попробуйте предложенный ниже вариант.

Напишем программу на языке Python 3:

def f(x, y, p):

   if x + y >= 68 and p == 4:

       return True

   elif x + y < 68 and p < 4:

       if p % 2 > 0:

           return f(x + 2, y, p + 1) or f(x, y + 2, p + 1) or f(3 * x, y, p + 1) or f(x, 3 * y, p + 1)

       else:

           return f(x + 2, y, p + 1) and f(x, y + 2, p + 1) and f(3 * x, y, p + 1) and f(x, 3 * y, p + 1)

   else:

       return False

for i in range(1, 60):

   if f(8, i, 1):

       print(i)

Результатом ее работы будет число 19, поэтому его берем в ответ. Для самоконтроля, найденное число должно быть меньше 20, так как в противном случае Петя выиграет своим первым ходом.

Пункт В:

def f(x, y, p):

   if x + y >= 68 and (p == 5 or p == 3):

       return True

   elif x + y < 68 and p < 5:

       if p % 2 > 0:

           return f(x + 2, y, p + 1) and f(x, y + 2, p + 1) and f(3 * x, y, p + 1) and f(x, 3 * y, p + 1)

       else:

           return f(x + 2, y, p + 1) or f(x, y + 2, p + 1) or f(3 * x, y, p + 1) or f(x, 3 * y, p + 1)

   else:

       return False

for i in range(1, 60):

   if f(8, i, 1):

       print(i)

Результатом работы программы будут два числа: 17 и 18. В ответ берем число 17.

Задание выполнено!

0,0(0 оценок)
Ответ:
yhaaa1212
yhaaa1212
20.04.2023 12:17

На самом деле изначально здесь была другая задача. Вот ее условие:

C4. Построить из строки следующую анаграмму

Ограничение времени    1 секунда

Ограничение памяти    64Mb

Ввод    стандартный ввод или input.txt

Вывод    стандартный вывод или output.txt

Для данного слова (последовательности строчных латинских букв) выведите следующее за ним (в лексикографическом порядке) слово, которое может быть получено из данного перестановкой букв (анаграмму). Если данное слово уже является последним среди всех своих анаграмм, то необходимо вывести первую возможную (в лексикографическом порядке) анаграмму.

Формат ввода

Задана последовательность слов, по одному слову в строке. Длина одного слова не превышает 50 символов.

Формат вывода

Необходимо вывести результат для каждого полученного на вход слова.

Ниже программный код:

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main() {

   string word;

   char for_sort[51];

   int count_for_sort, min_def, min_def_index;

   while (cin >> word) {

       count_for_sort = 0;

       min_def = 98;

       min_def_index = 51;

       for (int i = word.size() - 1; i >= 0; i--) {

           for_sort[count_for_sort] = word[i];

           count_for_sort++;

           if (word[i] < word[i + 1])

               break;

       }

       int shift = 0;

       if (word[word.size() - count_for_sort] < word[word.size() - count_for_sort + 1]) {

           for (int i = 0; i < count_for_sort; i++)

               if (for_sort[i] - word[word.size() - count_for_sort] > 0 &&

                   for_sort[i] - word[word.size() - count_for_sort] < min_def) {

                   min_def = for_sort[i] - word[word.size() - count_for_sort];

                   min_def_index = i;

               }

           swap(for_sort[0], for_sort[min_def_index]);

           shift = 1;

       }

       sort(for_sort + shift, for_sort + count_for_sort);

       for (int i = word.size() - count_for_sort; i < word.size(); i++)

           word[i] = for_sort[i - word.size() + count_for_sort)];

       cout << word << endl;

       word.clear();

   }

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота