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

Информатика 7 класс,
Сделайте 5 и 4 (если не трудно)


Информатика 7 класс, Сделайте 5 и 4 (если не трудно)

Показать ответ
Ответ:
ShuMaksik
ShuMaksik
04.07.2021 21:35

Тесты проваливаются на степенях двойки (A=2^n) при n >= 5

Напишу два решения. Первое просто показывает алгоритм, но имеет ограничение на N (результат не может быть больше 15 из-за переполнения unsigned long long)

Второе по своей сути такое же, но не имеет ограничений. Однако для этого понадобится особый тип данных big_integer. Вторую реализацию прикрепил к ответу в виде текстового файла из-за ограничения на количество символов в ответе.

// первое решение

#include <iostream>

typedef unsigned long long ulong;

ulong pow(int num, int pow);

int main()

{

   int a = 0;

   std::cin >> a;

   int n = 0;

   while (n++ <= a)

   {

       if (pow(n, n) % a == 0)

       {

           std::cout << n << std::endl;

           break;

       }

   }

   return 0;

}

ulong pow(int num, int pow)

{

   ulong res = num;

   for (int i = 1; i < pow; ++i)

       res *= num;

   return res;

}

0,0(0 оценок)
Ответ:
gjgjggfasf
gjgjggfasf
28.04.2021 18:14

ответ: 500

Объяснение:

1)Число точно больше 100, чтобы L было 3.

2)Какие бы числа мы не ставили на позициях единиц и десятков, результата они никакого не дадут, тк отрезаются командой div

3)Ближайшее необходимое число: 500

Дописал программу, чтобы проверить. Она выводит количество подходящих комбинаций при вводе всех чисел от 1 до 500.

var

 x, L, M,count,i: integer;  

begin

 count:=0;

 for i:=1 to 500 do

 begin

 x:=i; L := 0;M := 0;

 while x > 0 do  

 begin

   L := L + 1; x := x div 10;

   if L mod 2 = 0 then

     M := M + (x mod 10);

 end;

//write(L,'  ');write(M);

 if (L=3) and (M=5) then inc(count);

 end;

 writeln(count);

end.

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