Преобразуем первый запрос по правилу раскрытия скобок в логических выражениях:
Новосибирск & (Красноярск & Хабаровск | Норильск) ⇔
⇔ Новосибирск & Красноярск & Хабаровск | Новосибирск & Норильск.
Заменим переменные так, чтобы в таблице осталось только две переменных. Для этого сначала обозначим «Новосибирск & Красноярск & Хабаровск» как «А», «Новосибирск & Норильск» как «В». Преобразуем последний запрос в таблице, добавив ничего не изменяющее логическое умножение на «Новосибирск»:
Новосибирск & Красноярск & Хабаровск & Норильск ⇔
⇔ Новосибирск & Красноярск & Хабаровск & Норильск & Новосибирск ⇔
⇔ А & Норильск & Новосибирск ⇔ А & В.
Занесём данные в таблицу в новых обозначениях:
Запрос Найдено страниц, тыс.
А|В =570
В =214
А & В =68
Вычислим количество страниц по запросу А по формуле включений исключений:
NA = N(A|B) − NB + N(A&B) ⇔ NA = 570 −214 + 68 = 424.
ответ: 424.
Nikolaevich
26.05.2020
// PascalABC.NET 3.2, сборка 1449 от 23.05.2017 // Внимание! Если программа не работает, обновите версию!
begin var f:real->real:= x->cos(0.75*Power(x,0.25)-0.5*Power(x,0.5)+0.25*Power(x,0.75)); var a:=MatrGen(10,10,(i,j)->f(5+(10*i+j)*0.75)); Writeln('*** Исходный массив ***'); a.Println(7,3); Writeln(70*'-'); var fo:=OpenWrite('output.txt'); Writeln(fo,'*** Исходный массив ***'); for var i:=0 to 9 do begin for var j:=0 to 9 do Write(fo,a[i,j]:7:3); Writeln(fo) end; Writeln(fo,70*'-'); Write('Сформированный массив: '); Write(fo,'Сформированный массив: '); var b:=a.ElementsWithIndexes.Where(x->(x[0]=x[1]) or (x[0]=9-x[1])) .Select(x->x[2]).ToArray; b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); Write('Отсортированный массив:'); Write(fo,'Отсортированный массив:'); // пузырьковая сортировка for var i:=0 to 18 do for var j:=0 to 18-i do if b[j]>b[j+1] then Swap(b[j],b[j+1]); b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); fo.Close end.
begin var f:real->real:= x->cos(0.75*Power(x,0.25)-0.5*Power(x,0.5)+0.25*Power(x,0.75)); var a:=MatrGen(10,10,(i,j)->f(5+(10*i+j)*0.75)); Writeln('*** Исходный массив ***'); a.Println(7,3); Writeln(70*'-'); var fo:=OpenWrite('output.txt'); Writeln(fo,'*** Исходный массив ***'); for var i:=0 to 9 do begin for var j:=0 to 9 do Write(fo,a[i,j]:7:3); Writeln(fo) end; Writeln(fo,70*'-'); Write('Сформированный массив: '); Write(fo,'Сформированный массив: '); var b:=a.ElementsWithIndexes.Where(x->(x[0]=x[1]) or (x[0]=9-x[1])) .Select(x->x[2]).ToArray; b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); Write('Отсортированный массив:'); Write(fo,'Отсортированный массив:'); b.Sort; // вместо пузырьковой сортировки b.ForEach(x->Write(x:7:3)); Writeln; b.ForEach(x->Write(fo,x:7:3)); Writeln(fo); fo.Close end.
eurostom
26.05.2020
Using System; namespace СиШарп { class Program { static void Main(string[] args) { Console.Write("N = "); int N = int.Parse(Console.ReadLine()); Console.Write("A({0}):",N); int[] A = new int[N]; Random RND = new Random(); for (int i = 0; i < N; i++) { A[i] = RND.Next(-N,N+1); Console.Write(" {0}",A[i]); } for (int i = N - 1; i >= 0 && A[i] < 0; i--) ; int L = 0, j = N; while (j > 0) if (A[--j] > 0) L++; else if (L < 2) L = 0; else break; for(int i = j + L + 1; i < N; i++) A[i - L] = A[i]; Console.Write("\nA({0}):",N-L); for (int i = 0; i < N - L; i++) Console.Write(" {0}",A[i]); Console.ReadKey(); } } }
Преобразуем первый запрос по правилу раскрытия скобок в логических выражениях:
Новосибирск & (Красноярск & Хабаровск | Норильск) ⇔
⇔ Новосибирск & Красноярск & Хабаровск | Новосибирск & Норильск.
Заменим переменные так, чтобы в таблице осталось только две переменных. Для этого сначала обозначим «Новосибирск & Красноярск & Хабаровск» как «А», «Новосибирск & Норильск» как «В». Преобразуем последний запрос в таблице, добавив ничего не изменяющее логическое умножение на «Новосибирск»:
Новосибирск & Красноярск & Хабаровск & Норильск ⇔
⇔ Новосибирск & Красноярск & Хабаровск & Норильск & Новосибирск ⇔
⇔ А & Норильск & Новосибирск ⇔ А & В.
Занесём данные в таблицу в новых обозначениях:
Запрос Найдено страниц, тыс.
А|В =570
В =214
А & В =68
Вычислим количество страниц по запросу А по формуле включений исключений:
NA = N(A|B) − NB + N(A&B) ⇔ NA = 570 −214 + 68 = 424.
ответ: 424.