zoukankan      html  css  js  c++  java
  • 匹克定理pick

    与POJ1226为例

    要知道在一个格点多边形内 知道期内部的点数 Q,边上的点数L,就可以知道他的面积pick定理及 S=Q+L/2-1;

    然后 还有边上的点数除了多边形的顶点外,还有一些点该怎么求呢,嘎嘎,记得之前欧几里得吗?两个点的差值,及X轴的差值和Y轴的差值,然后很自然的想到了最大公约数为什么最大公约数就是经过的整格点的个数呢? 当时我是这么想的,当X与Y增长相同的时候,他们的经过的整格点数无疑是X个,当其中一个n倍数式的增加的时候同样,因为之前的1:1的增长现在只不过变成了1:n罢了.那当两个同时增长的时候分别增长n,和m倍.的时候只不过比变成了n:m罢了嘎嘎现在应该明白了好了

    #include <iostream>
    #include<cstdio>
    #include<string.h>
    #include<cmath>
    using namespace std;
    struct point
    {
        double x,y;
        point (double a=0,double b=0){x=a;y=b;}
    };
    struct point p[105];
    double cross(point a,point b)
    {
        return a.x*b.y-a.y*b.x;
    }
    double work(int n)
    {
        int i;
        double sum=0;
        for(i=0;i<n;i++)
         sum+=cross(p[i],p[(i+1)%n]);
         return sum/2;
    }
    int gcd(int a,int b)
    {
        int t;
        if(a<b)
        {
            t=a;a=b;b=t;
        }
        if(b==0)return a;
        else return gcd(b,a%b);
    }
    int main()
    {
        int t,n,i;
        int x,y,k;
        double sum;
        int num1,num2;
        scanf("%d",&t);
        k=0;
        while(t--)
        {
            num2=0;
            scanf("%d",&n);
            p[0]=point(0,0);
             for(i=1;i<=n;i++)
             {
                 scanf("%d%d",&x,&y);
                 p[i].x=p[i-1].x+x;
                 p[i].y=p[i-1].y+y;
                 x=x>0?x:-x;
                 y=y>0?y:-y;
                 num2+=gcd(x,y);
             }
             sum=work(n);
             num1=(2*sum+2-num2)/2;
            printf("Scenario #%d:
    ",++k);
            printf("%d %d %.1lf
    
    ",num1,num2,sum);
         }
        return 0;
    }
    


     

  • 相关阅读:
    正则只能输入数字小数点后保留4位
    redis基础之安装和配置
    IDEA 2017下载及注册码
    springcloud zuul 使用zuulfilter 修改请求路径和响应头
    JPA 多表分页查询
    springboot整合JPA创建数据库表失败
    springboot整合fastjson 将null转成空字符串
    Go 结构体和map等数据结构转json字符串
    go项目找不到包问题
    设计模式--策略模式
  • 原文地址:https://www.cnblogs.com/Opaser/p/3662062.html
Copyright © 2011-2022 走看看