Вася написал следующую программу, в которой этот массив создается и обрабатывается:

алгоритм паскаль Программирование массив

Есть двумерный массив A размером 2n×2n, где n ≤ 50. Вася написал следующую программу, в которой этот массив создается и обрабатывается:
http://i064.radikal.ru/1002/31/64c2fc41992e.jpg (ccылка на картинку с кодом программы)

Петя проанализировал эту программу и сказал, что тот же результат можно получить с помощью вот какой программы:
http://s002.radikal.ru/i198/1002/a0/142856c0389e.jpg (ссылка на вторую картинку с кодом программы пети)
Ответы:
Вася и Петя молодцы.
я так понимаю, нужно указать, что должно быть на месте троеточия во второй программе
сразу определим, что за значение выводит первая программа
она выводит количество нулевых A[i,j] в столбцах с n по 2n и в строках с 1 по 2n (я так понимаю, что в C-версии программы опечатка на верхнем пределе по i)
сами значения A[i,j] это значения равные 1 для i ∈ [n;2n-1] и j ∈ [i+1-n;2(i-n)+1-δ(i,2n-1)] и равные -1 для j ∈ [n;2n-1] и i ∈ [j+1-n;2(j-n)+1-δ(j,2n-1)]
2(i-n)+1-δ(i,2n-1) будет больше или равно n при i ≥ (3n-1)/2, n ≥ 2
k₁ = Σ 1 (i,ceil((3n-1)/2),2n-1) (j,n,2(i-n)+1-δ(i,2n-1))
k₂ = Σ 1 (j,n,2n-1) (i,j+1-n,2(j-n)+1-δ(j,2n-1))
k₂ = Σ 2(j-n)+1-δ(j,2n-1)-(j+1-n)+1 (j,n,2n-1) =
= Σ (j+1-n-δ(j,2n-1)) (j,n,2n-1) = -1 + Σ (j+1-n) (j,n,2n-1) = (n²+n-2)/2
k₁ = Σ 2(i-n)+1-δ(i,2n-1)-n+1 (i,ceil((3n-1)/2),2n-1) =
= Σ 2i-3n+2-δ(i,2n-1) (i,ceil((3n-1)/2),2n-1) =
= -1 + Σ 2i-3n+2 (i,ceil((3n-1)/2),2n-1)
Если n — чётное, то ceil((3n-1)/2)=3n/2 и k₁ = (n²+2n-4)/4
если n — нечётное, то ceil((3n-1)/2)=(3n-1)/2 и k₁ = (n²+2n-3)/4
k=(n+1)2n-k₁-k₂
Если n — чётное, то k =(5n²+4n+8)/4=n(5n+4)/4+2
Если n — нечётное, то k=(5n²+4n+7)/4=(n(5n+4)-1)/4+2
В целом, k = (5n²+4n+8-mod(n,2))/4=(n(5n+4)-mod(n,2))/4 + 2
ето не он


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.