poj 1265(pick 定理)

多边形面积计算
部署运行你感兴趣的模型镜像


#include<stdio.h>  //面积=内部点+边上点/2-1
#include<math.h>
struct Point
{
 int x,y;
}point[110];
double area;
int gcd(int a,int b)
{
 if(b==0) return a;
 return gcd(b,a%b);
}

int OnEdge(int n)//,Point P
{
 int i,ret=0;
 for(i=0;i<n;i++)
  ret+=gcd( abs(point[(i+1)%n].x-point[(i)%n].x),abs(point[(i+1)%n].y-point[i%n].y) );   //一条边上的点的数目等于横纵左边的最大公约数
 return ret;
}

int InSide(int n)//,Point P  外部点的数目 面积公式反过来求的
{
 int i;
 area=0.0;
 for(i=0;i<n;i++)
 {
  area+=point[(i+1)%n].y*(point[i].x-point[(i+2)%n].x);
 }

 return fabs(area)/2+1-OnEdge(n)/2;
}


int main()
{
 int t,i,n,m,l,dx[100],dy[100],j=1;
 scanf("%d",&t);
 
 while(t--)
 {
  scanf("%d",&n);
  
  for(i=0;i<n;i++)
  {
   scanf("%d%d",&dx[i],&dy[i]);
   
  }
        point[0].x=0;
  point[0].y=0;
  for(i=1;i<=n;i++)
  {
   point[i].x=point[i-1].x+dx[i-1];
   point[i].y=point[i-1].y+dy[i-1];
  } 
        /*for(i=0;i<n;i++)
   printf("%d %d\n",point[i].x,point[i].y);*/
  
  m=OnEdge(n);
  l=InSide(n);
  printf("Scenario #%d:\n",j++);
  printf("%d %d %.1lf\n\n",l,m,area/2);
 }
 
 
 return 0;
}

您可能感兴趣的与本文相关的镜像

Langchain-Chatchat

Langchain-Chatchat

AI应用
Langchain

Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型和 Langchain 应用框架实现的开源项目,旨在构建一个可以离线部署的本地知识库问答系统。它通过检索增强生成 (RAG) 的方法,让用户能够以自然语言与本地文件、数据库或搜索引擎进行交互,并支持多种大模型和向量数据库的集成,以及提供 WebUI 和 API 服务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值