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

Спрограммирование линейных алгоритмов в delphi.

Показать ответ
Ответ:
жека0262
жека0262
10.02.2020 15:40
Пусть чисел в отрезке N штук.
тогда сумма подряд идущих чисел, начиная с х будет равна
Sum = Nx + N*(N-1)/2
здесь второе слагаемое - это частичная сумма арифметической прогрессии 0,1,2,3...N
Максимальное значение N будет при нулевом x
1/2 (N - 1) N = 1014
N^2/2 - N/2 - 1014 = 0
N = 1/2 - sqrt(8113)/2 - нехороший корень
N = 1/2 + sqrt(8113)/2 - а это правильный, равный 45,53
Максимальное значение x будет при N=1
x = 1014, это тривиальное решение
Перебирать будем по N, просто меньше перебора
Nx + N*(N-1)/2 = 1014
Nx = 1014 - N*(N-1)/2
x =  1014/N - (N-1)/2 = (2028 - N(N-1))/(2N)
и проверять x на целостность

var 
  x,n,counter:longint;
begin
 counter:=0;
  for n:=1 to 45 do
    if (2028 - N*(N-1))mod(2*N) = 0 then 
    begin
      inc(counter);
      x := (2028 - N*(N-1))div(2*N);
      writeln ('x=',x,' N=',n);
    end;
  writeln('Всего решений ',counter);
end.

а отрезков 6
0,0(0 оценок)
Ответ:
1анж48
1анж48
15.04.2020 15:09

например, это можно сделать так:

UPD: изменено

#include <iostream>

#include <set>

#include <cmath>

using namespace std;

bool prime(int n){

   for(int i = 2; i * i <= n; i++)

       if(n % i == 0)

           return false;

   return true;    

}

signed main() {

   int n;

   cin >> n;

   set<int> ok;

   ok.insert(2);

   ok.insert(3);

   ok.insert(5);

   int sum = 0, cnt = 0,cur = 2;

   while(cnt != n){

       bool norm = true;

       for(int i = 2; i * i <= cur; i++)

           if(cur % i == 0 && ( ok.find(i) == ok.end() && prime(i)) || (cur % (n/i) == 0 && ok.find(n/i) == ok.end() && prime(n/i)))

               norm = false;

       if(norm){sum += cur; cnt++;}

       cur++;

   }

   cout << sum;

}

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