Birthday Cake (uva10167简单暴力枚举)

来源:互联网 发布:哪些大学有云计算专业 编辑:程序博客网 时间:2024/05/19 18:14

题意:有一个半径100,圆形(0,0)的蛋糕,上面有很多樱桃,有一对双胞胎要平分蛋糕,并且平分上面的樱桃,问你切的那刀的直线的Ax+By = 0的A,B是多少范围都在[-500,500]

思路:因为范围在[-500,500],所以枚举A,B,统计在直线上面的和在直线下面的樱桃,把樱桃的坐标带入,如果>0说明在直线的上方,<0在直线的下方==0在直线上,题目说不能再直线上,所以=0的直接结束

#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;struct Point{    int x,y;}p[205];Point cherr[105];int main(){    int n;    while(scanf("%d",&n) != EOF)    {        int A,B,f = 1;        if(n == 0)            break;        for(int i = 0; i < 2*n; i++)        {            scanf("%d%d",&cherr[i].x,&cherr[i].y);        }        for(A = -500 ; A <= 500; A++)        {            for(B = -500; B <= 500; B++)            {                int flag = 1,sum = 0;                for(int i = 0; i < 2*n&& flag; i++)                {                    if(A*cherr[i].x + B *cherr[i].y == 0)                        flag = 0;                    else if(A*cherr[i].x + B *cherr[i].y > 0)                        sum++;                }                if(sum == n && flag)                {                    f = 0;printf("%d %d\n",A,B);                }                if(!f) break;            }            if(!f) break;        }    }    return 0;}


原创粉丝点击