2) A = True; B = False; C = True
A \/ С /\ (B \/ ¬B → ¬C) = A \/ С /\ (B \/ ¬C) = 1 (True)
3) Вес одного пикселя = 8 бит = 1 байт
(1024 * 768 * 1) / 1024 = 768 Кбайт
Program
tapsirmaC;
var
a,b,n,x,p:integer;
input,output:text;
begin
p:=0;
assign(input,'c.in');
assign(output,'c.out');
reset(input);
rewrite(output);
read(input,a,b,n);
for x:= 1 to n do
begin
if a*x mod n = b
then
p:=p+1;
end;
write(output,p);
close(input);
close(output);
end.
Немного теории:
Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
int a[]={7,8,9}; - инициализация массива.
int b*=a - в этой строчке ошибка. Правильно: int *b=a; - объявляем указатель на нулевой элемент массива.
b++; - операция постфиксного инкремента(так как значение b в этой строчке нигде не используется, то данное выражение равносильно b=b+1). Теперь в b находится адрес первого элемента массива.
*(b+1)=*b - присваиваем второму элементу массива значение первого элемента(эта запись равносильна a[2]=a[1])
b[1] равносильно a[2] (не забываем, что в b[0] теперь адрес первого элемента, а не в нулевого. Адрес нулевого элемента будет в b[-1], а второго элемента - в b[1]).
В итоге значение b[1] равно 8
Ответ: 8
1024×400=409600 байт
409600÷50=8192байта/с
8192×30=245760байт=240Кбайт
//PascalABC.NET
//Версия 3.3, сборка 1611
begin
write(ReadSeqInteger(8).Where(x->(x mod 3=0) and (x mod 10=4)).Count());
end.