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

Питон Максимум на сломанном калькуляторе
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять, последовательность (часто называемая сиракузской ), вычисляемая от выбранного числа по правилу

an+1=an/2, если an — чётное число
an+1=3an+1, если an — нечётное число
обязательно достигнет единицы. Он решил поэкспериментировать с последовательностью: задать начальную величину, вычислить сколько-то первых членов и посмотреть, какого наибольшего значения они достигнут. Только на калькуляторе, на котором он считал, сломался экран, и было видно только три последних разряда получаемых чисел. Поэтому Петя искал максимум из тех чисел, которые он видел. Напишите программу, которая выведет найденный им максимум.

Входные данные

В единственной строке через пробел заданы два целых числа: a0 — начальный член последовательности и k — количество членов, которые вычисляет Петя, то есть индекс последнего вычисленного члена (1≤a0≤107, 0≤k≤104). Гарантируется, что все получаемые члены последовательности не превосходят 109.

Выходные данные

Выведите через пробел два целых числа — член последовательности ai, 0≤i≤k, для которого три последние цифры дают максимальное число, и индекс i этого члена. Если таких членов несколько, выведите тот, который имеет больший индекс.

Примеры
Ввод
Вывод
2518 5
1889 3

👇
Ответ:
luhxor
luhxor
07.04.2020

n, k = list(map(int, input().split()))

mas = [n]

kalk = []

for i in range(k):

   if n % 2 == 0:

       n = n//2

       mas.append(n)

   else:

       n = (n * 3) + 1

       mas.append(n)

for el in range(len(mas)):

   if mas[el] >= 1000:

       kalk.append(int(str(mas[el])[1 : ]))

   else:

       kalk.append(int(mas[el]))

num = 0

huge = 0

for j in range(len(kalk)):

   if kalk[j] > huge:

       huge = kalk[j]

       num = j

print(mas[num], num)

Объяснение:

4,8(36 оценок)
Открыть все ответы
Ответ:
Davidggg
Davidggg
07.04.2020
Var used: Set of Char;
    s1, s2: string;
    i: integer;
    done: boolean;
    c: char;

function IsLetter(c: char): boolean;
begin
  IsLetter := ((c >= 'a') and (c <= 'z')) or ((c >= 'A') and (c <= 'Z'));
end;

function UpperCase(c: char): char;
begin
  if (c >= 'a') and (c <= 'z') then
    UpperCase := Chr(Ord(c) - Ord('a') + Ord('A'))
  else
    UpperCase := c;
end;

begin
used := [];

readln(s1);
readln(s2);

for i := 1 to length(s1) do
  if (IsLetter(s1[i])) then
    include(used, UpperCase(s1[i]));

for i := 1 to length(s2) do
  if (IsLetter(s2[i])) then
    include(used, UpperCase(s2[i]));

done := False;
for c := 'A' to 'Z' do
  if not (c in used) then
  begin
    done := True;
    write(c);
  end;

if not done then
  write(0);

writeln;
end.
4,6(55 оценок)
Ответ:
GanifaGasanova505
GanifaGasanova505
07.04.2020
//написано на си/си++
#include <iostream>#include <stdio.h>#include <time.h>
#define length 20
int main() { setlocale(LC_ALL, ""); srand(time(NULL));
int arr[length];
for (int i = 0; i < length; ++i) { arr[i] = rand() % 100 + 1; std::cout << arr[i] << "\n"; }
for (int i = 0; i < length; ++i) { if (arr[i] % 2 == 0) { for (int j = 0; j < length - 1; ++j) { if (arr[j] % 2 == 0) { if (arr[i] < arr[j]) {//сортировка будет происходить от Б к М int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } } }
std::cout << "\nsorted array\n\n"; for (int i = 0; i < length; ++i) { std::cout << arr[i] << "\n"; }
system("pause"); return 0;}
4,8(87 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ