2304(10)=100100000000(2)
то есть переводим число из десятичной в двоичную
столбиком
делим каждый раз на 2
получившиеся чило делим на 2 до тех пор пока оно небудет равнятся 1
потом все остатки делений начиная с последный и заканчивая на 1 выписываем в один ряд
Даю 2 варианта:
1)
#include <iostream>#include <list>using namespace std;
int main() { int n, t; cin >> n; list<int> li; for (int i = 0; i < n; i++) { cin >> t; li.push_back(t); } li.sort(); li.unique(); cout << li.size() << endl; return 0;}
2)
#include <iostream>#include <set>using namespace std;
int main() { int n, t; cin >> n; set<int> se; for (int i = 0; i < n; i++) { cin >> t; se.insert(t); } cout << se.size() << endl; return 0;}
N = 256
N = 2 ** i
i = 8
k = 40 * 32 * 48 = 61440 символов
I = k * i
I = 61440 * 8 = 491520 бит = 61440 Байт = 60 Кбайт
Ответ: 60 Кбайт
<em>// PascalABC.NET 3.3, сборка 1590 от 03.12.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(12,0,40); a.Println;
a.Where(t->t.IsEven).Println
end.
<u>Пример</u>
19 22 12 20 39 31 23 9 32 7 2 10
22 12 20 32 2 10