![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 02.07.2010
Сообщений: 167
|
![]()
Что такое М и S
Многоугольник (не обязательно выпуклый) на плоскости задан координатами своих вершин. Требуется подсчитать количество точек с целочисленными координатами, лежащих внутри него (но не на его границе). Формат входных данных. В первой строке содержится N (3 ^ N ^ 1000) —число вершин многоугольника. В последующих N строках идут координаты (Xi, Уi) вершин многоугольника в порядке обхода по часовой стрелке. X и У — целые числа, по модулю не превосходящие 1000000. Формат выходных данных. В выходной файл вывести одно число — искомое число точек. Пример файла input.txt: 4 -1 -1 -1 1 1 1 1 -1 Пример файла output.txt: 1 Пример файла input.txt: 3 0 0 0 2 2 0 Пример файла output.txt: 0 {$N+,E-} Const MaxN=1000; Var Fi,Fo:Text; Mn:Array[1..MaxN]Of Record X,Y:LongInt End; N:Word; S,M,K:Comp; Procedure LoadFile; Var I:Word; Begin Assign(Fi,'e.in'); ReSet(Fi); Read(Fi,N); For I:=1 To N Do Begin Read(Fi,Mn[I].X); Read(Fi,Mn[I].Y); End; Close(Fi); End; Procedure CountS; Var I:Word; Begin S:=0; For I:=1 To N-1 Do S:=S+(Mn[I].Y+Mn[I+1].Y+0.0)*(Mn[I].X-Mn[I+1].X); S:=Abs(S+(Mn[N].Y+Mn[1].Y+0.0)*(Mn[N].X-Mn[1].X)); End; Procedure CountM; Var I:Word; Function NOD(a,b:LongInt):LongInt; Var T:LongInt; Begin If a<b Then Begin t:=a;a:=b;b:=t; End; While B<>0 Do Begin T:=b; b:=A Mod B; A:=T; End; NOD:=A; End; Begin M:=0; For I:=1 To N-1 Do M:=M+NOD(Abs(Mn[I].Y-Mn[I+1].Y),Abs(Mn[I].X-Mn[I+1].X)); M:=M+NOD(Abs(Mn[N].Y-Mn[1].Y),Abs(Mn[N].X-Mn[1].X)); End; Procedure CountK; Begin K:=(S+2-M)/2; End; Procedure SaveResult; Begin Assign(Fo,'e.out'); ReWrite(Fo); WriteLn(Fo,K:0:0); Close(Fo); End; Begin LoadFile; CountS; CountM; CountK; SaveResult; End.
Если я тебе помог, помоги и ты мне +ом с комментарием
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
еще не студент, но надо научиться. разобраться и доработать нужно. | alexey1990 | Помощь студентам | 5 | 23.05.2010 23:08 |
Надо с SATA разобраться | piratkaldun | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 22.11.2009 19:41 |
Помогите разобраться в двух вещах очень надо ( | Droid | Win Api | 2 | 06.11.2008 18:31 |
Помогите пишу дипломку, срочно надо разобраться | Irinka | Помощь студентам | 7 | 29.03.2008 11:25 |