Задачка мне очень понравилась, прилагаю решение на C#, консольное приложение
Объяснение:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Археологи_строители
{ class Program
{
static void Main(string[] args)
{
//Объявляем и задаем переменные "M" и "N", а так же переменную для результата
int M,N=new int();
int MyResult = 0;
Console.WriteLine("Ведите Текущее количество ступенек и Сколько их должно быть:");
M = int.Parse(Console.ReadLine());
N = int.Parse(Console.ReadLine());
// Создаем массив для хранения данных о ступенях. M-Количество ступенек, Цифра - для колонок длины и высоты
int[,] mass = new int[M,2];
// Запись значений в массив
for (int x = 0; x < M; x++){
for (int y = 0; y < 2; y++){
if (y==0){ //Чисто для юзерфрендли отображения
Console.Write($"Введите значение Длины для ступеньки №{x + 1}= ");} else{
Console.Write($"Введите значение Высоты для ступеньки №{x + 1}= ");}
mass[x, y] = Convert.ToInt32(Console.ReadLine());}
Console.WriteLine();}
/* Как оказалось, самый простой определить какую же ступеньку надо "поднимать"-
* это вычислить площадь гипотетически "заполняемого" пространства над ступенькой и взять
* наименьшее значение.
*
* Итак, допустим если у нас 5 ступенек, то нам нам необходимо записать 4 значения
* (в рамках лестницы) площади заполняемых ступенек.
*
* Перемножаем Длину ступеньки N на высоту ступеньки N+1, M-1 раз и сохраняем в массив
*/
int M2 = M; //Дублируем изначальное число ступенек для контроля цикла
for (int z = 0; z <M2-N; z++)
{
int[] acreage = new int[M - 1];
for (int x = 0; x < M - 1; x++)
{
for (int y = 0; y < 2; y++)
{
acreage[x] = mass[x, 0] * mass[x + 1, 1];
}
}
/*
* И так у нас есть все значения гипотетически заполняемой ступеньки.
* Ищем минимальное значение площади
*/
int minAcreage = acreage[0];
for (int i = 0; i < M - 1; i++)
{
if (minAcreage > acreage[i])
{
minAcreage = acreage[i];
}
}
MyResult = MyResult+minAcreage; //Плюсуем данное значение в переменную результата
// У нас есть минимальная площадь. Найдем номер данной ступеньки
int IndexAcreage = Array.IndexOf(acreage, minAcreage);
//"Достроим нужную нам ступеньку и запишем обновленные данные во временный массив"
int[,] tempMass = new int[M - 1, 2]; //Он на размер меньше, т.к. и "полных" ступенек у нас стало меньше
for (int x = 0; x < M - 1; x++)
{
for (int y = 0; y < 2; y++)
{
//Ступеньки до IndexAcreage мы просто переписываем во временный массив
if (x < IndexAcreage)
{
tempMass[x, y] = mass[x, y];
}
//2 ступеньки от IndexAcreage мы превращаем в одну (застраивая их блоками)
else if (x == IndexAcreage)
{
tempMass[x, y] = mass[x, y] + mass[x + 1, y];
}
/* и после IndexAcreage мы та же копируем, но со сдвигом вправо, т.к. полноценных
* ступенек стало меньше
*/
else if (x > IndexAcreage)
{
tempMass[x, y] = mass[x + 1, y];
}
}
}
M = M - 1; //Поскольку ступенек теперь меньше, то и их фактическое число необходимо уменьшить
for (int x = 0; x < M + 1; x++)
{
for (int y = 0; y < 2; y++)
{
mass[x, y] = 0;
}
}
//переписываем данные в основной массив и запускаем следющую интерацию цикла
for (int x = 0; x < M; x++)
{
for (int y = 0; y < 2; y++)
{
mass[x, y] = tempMass[x, y];
}
}
}
Console.WriteLine($"Минимально необходимое число блоков: {MyResult}");
Console.ReadKey(true);
}
}
}
«История развития вычислительной техники»
Выполнила: учащаяся группы О2-2
Рогова Анна
г. Гомель, 2003
Содержание
Введение. 2
История технологий и поколений ЭВМ... 3
Механические предпосылки . 3
Электромеханические вычислительные машины .. 4
Электронные лампы .. 4
ЭВМ 1-ого поколения. Эниак ( ENIAC) 5
Транзисторы. ЭВМ 2-го поколения. 7
Интегральные схемы. ЭВМ 3-го поколения . 8
Сверхбольшие интегральные схемы (СБИС). ЭВМ 4-го поколения . 8
История развития персональных ЭВМ (PC – Personal Computer) 10
Роль вычислительной техники в жизни человека. 16
Заключение. 19
Список литературы.. 20
Введение
Слово «компьютер» означает «вычислитель», т.е. устройство для вычислений. Потребность в автоматизации обработки данных, в том числе вычислений, возникла очень давно. Более 1500 лет тому назад для счета использовались счетные палочки, камешки и т.д.
В наше время трудно представить себе, что без компьютеров можно обойтись. А ведь не так давно, до начала 70-х годов вычислительные машины были доступны весьма ограниченному кругу специалистов, а их применение, как правило, оставалось окутанным завесой секретности и мало известным широкой публике. Однако в 1971 году произошло событие, которое в корне изменило ситуацию и с фантастической скоростью превратило компьютер в повседневный рабочий инструмент десятков миллионов людей. В том, вне всякого сомнения знаменательном году еще почти никому не известная фирма Intel из небольшого американского городка с красивым названием Санта-Клара (шт. Калифорния), выпустила первый микропроцессор. Именно ему мы обязаны появлением нового класса вычислительных систем – персональных компьютеров, которыми теперь пользуются, по существу, все, от учащихся начальных классов и бухгалтеров до ученых и инженеров.
В конце XX века невозможно представить себе жизнь без персонального компьютера. Компьютер прочно вошел в нашу жизнь, став главным человека. На сегодняшний день в мире существует множество компьютеров различных фирм, различных групп сложности, назначения и поколений.
В данном реферате мы рассмотрим историю развития вычислительной техники, а также краткий обзор о возможностях применения современных вычислительных систем и дальнейшие тенденции развития персональных компьютеров.
История технологий и поколений ЭВМ
Механические предпосылкиНачало развития технологий принято считать с Блеза Паскаля, который в 1642г. изобрел устройство, механически выполняющее сложение чисел. Его машина предназначалась для работы с 6-8 разрядными числами и могла только складывать и вычитать, а также имела лучший, чем все до этого фиксации результата. Машина Паскаля имела размеры 36´13´8 сантиметров, этот небольшой латунный ящичек было удобно носить с собой. Инженерные идеи Паскаля оказали огромное влияние на многие другие изобретения в области вычислительной техники.
Следующего этапного результата добился выдающийся немецкий математик и философ Готфрид Вильгельм Лейбниц, высказавший в 1672 году идею механического умножения без последовательного сложения. Уже через год он представил машину, которая позволяла механически выполнять четыре арифметических действия, в Парижскую академию. Машина Лейбница требовала для установки специального стола, так как имела внушительные размеры: 100´30´20 сантиметров.
В 1812 году английский математик Чарльз Бэббидж начал работать над так называемой разностной машиной, которая должна была вычислять любые функции, в том числе и тригонометрические, а также составлять таблицы. Свою первую разностную машину Бэббидж построил в 1822 году и рассчитывал на ней таблицу квадратов, таблицу значений функции y=x2 +x+41 и ряд других таблиц. Однако из-за нехватки средств эта машина не была закончена, и сдана в музей Королевского колледжа в Лондоне, где хранится и по сей день. Однако эта неудача не остановила Бэббиджа, и в 1834 году он приступил к новому проекту – созданию Аналитической машины, которая должна была выполнять вычисления без участия человека. С 1842 по 1848 год Бэббидж упорно работал, расходуя собственные средства. К сожалению, он не смог довести до конца работу по созданию Аналитической машины – она оказалась слишком сложной для техники того времени. Но заслуга Бэббиджа в том, что он впервые предложил и частично реализовал, идею программно-управляемых вычислений. Именно Аналитическая машина по своей сути явилась прототипом современного компьютера. Эта идея и ее инженерная детализация опередили время на 100 лет!
Уроженец Эльзаса Карл Томас, основатель и директор двух парижских страховых обществ в 1818 году сконструировал счетную машину, уделив основное внимание технологичности механизма, и назвал ее арифмометром. Уже через три года в мастерских Томаса было изготовлено 16 арифмометров, а затем и еще больше. Таким образом, Томас положил начало счетному машиностроению. Его арифмометры выпускали в течение ста лет, постоянно совершенствуя и меняя время от времени названия.