Program n1; var i,a,temp: integer; begin i:=111; for i:=100 to 999 do begin temp:=sqr(i mod 10)+sqr(i div 10 mod 10)+sqr(i div 100); if temp mod 13=0 then writeln(i); end; end.
int main() { list<int>mylist; //Делаем со списком, что хотим mylist.push_back(1); mylist.push_back(2); mylist.push_back(3); mylist.push_back(-4); mylist.push_back(5); for (auto i : mylist) { cout << i << " "; } cout << "\n"; //Удаляем последний отрицательный элемент auto it = mylist.end(); while (*it > 0) { if (it == mylist.begin()) { cout << "Not found.\n"; return 0; } it--; } //Делаем со списком, что хотим mylist.erase(it); for (auto i : mylist){ cout << i << " "; } return 0; }
Если х1,у1 - координаты одного конца 1-го отрезка, х2,у2 - координаты его второго конца, то уравнение прямой, на которой этот отрезок лежит, такое: у=у1+(у2-у1)(х-х1)/(х2-х1). Для второго отрезка (х3,у3) и (х4,у4), прямая у=у3+(у4-у3)(х-х3)/(х4-х3). Абсцисса точки пересечения (х,у) этих прямых находится из равенства
у1+(у2-у1)(х-х1)/(х2-х1)=у3+(у4-у3)(х-х3)/(х4-х3). Это х надо выразить в виде формулы до написания программы, чтобы х вычислялось в программе по этой формуле.
Схема программы: 1) проверка параллельности отрезков. Если "да", то выход и ответ "не существует". 2) проверка выполнения двух двойных неравенств: x1 <= x <= x2, x2 <= x <= x4. Если оба неравенства "истина", то ответ "существует", иначе "не существует"
Обратите внимание, что х1 должно быть меньше чем х2, и х3 меньше чем х4.
var i,a,temp: integer;
begin
i:=111;
for i:=100 to 999 do
begin
temp:=sqr(i mod 10)+sqr(i div 10 mod 10)+sqr(i div 100);
if temp mod 13=0 then writeln(i);
end;
end.