В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.
Код процедуры:
procedure print_fib(n: integer);
var a, b, t: integer;
begin
a := 0;
b := 1;
while n > 0 do
begin
write(b, ' ');
b := a + b;
a := b - a;
n := n - 1;
end;
end;
Пример основной программы:
begin
print_fib(10)
end.
Вывод:
1 1 2 3 5 8 13 21 34 55
количество цветов в палитре определяется формулой хартли:
n=2^i (где n - количество цветов, i - "вес" 1 px в битах).
1. найдем количество пикселей в изображении: 256*256=2^8 * 2^8 = 2^16 px
2. определим "вес" всех рх, переведя кб в биты: 8*2^13 (бит) = 2^3 * 2^13 = 2^16 (бит)
3. разделим "вес" всего изображения на количество рх (то есть найдем "вес" 1 рх в битах): 1 рх = 2^16 / 2^16 = 1 бит
4. следовательно (см. начало), количество цветов n=2^1=2 (т.е. изображение двухцветное, скорее всего - ч/б.
#include <vector>
using namespace std; //теперь нам не придется страдать с std::
int main(){
int n; cin>>n; //ввод кол-ва сортируемых элементов
vector <int> a(1e9,0); //создание вектора для хранения ответа. пока он заполнен 0. можно использовать массив
for (int i=0; i<n; ++i) { //запускаем цикл для ввода чисел
int input; cin>>input; //вводим сортируемое число
++a[input]; //считаем кол-во таких элементов во входном файле
}
for (int i=0; i<1e9; ++i) //цикл по всем элементам массива ответа
for (int j=0; j<a[i]; ++j) //цикл, который выводит данный элемент столько раз, сколько он встречается в массиве
cout<<i<<' ';
return 0; //завершение работы программы
}
Сортировка подсчетом заключается в том, что мы считаем, сколько раз данный элемент встречается в сортируеиом массиве и воводим его столько раз подряд на нужном месте, сколько он встречается в массиве.
Написанная мной программа сортирует элементы
общее кол-во которых не превосходит
Если нужно что-то еще – пиши. Буду обьяснять более подробно.