Pagini recente » Cod sursa (job #1727939) | Cod sursa (job #1158015) | Cod sursa (job #1166644) | Cod sursa (job #354411) | Cod sursa (job #906787)
Cod sursa(job #906787)
#include<cstdio>
#include<utility>
#define nmax 100010
#define mp make_pair
using namespace std;
int n,x,y,x0,y0,i,cmmdc(int,int);
long long nr,NR;
pair<int,int>v[nmax];
int main()
{
freopen("copaci.in","r",stdin);
freopen("copaci.out","w",stdout);
scanf("%d", &n);
scanf("%d%d", &x0,&y0);
v[1]=mp(x0,y0);
for(i=2;i<=n;++i)
{
scanf("%d%d", &x, &y);
nr+=(long long)cmmdc(x-x0,y-y0);
x0=x;y0=y;
v[i]=mp(x,y);
}
nr+=(long long)cmmdc(x0-v[1].first,y0-v[1].second);
v[n+1]=v[1];
for(i=1;i<=n;++i)
NR+=(long long)(v[i].first*v[i+1].second-v[i+1].first*v[i].second);
if(NR<0)NR=-NR;
NR-=nr;
NR+=2;
NR/=2;
printf("%lld\n", NR);
return 0;
}
int cmmdc(int a, int b)
{
int aux;
if(a<0)a=-a;
if(b<0)b=-b;
while(b!=0)
{
aux=a;
a=b;
b=aux%a;
}
return a;
}