hdu 3432——Wax

来源:互联网 发布:三菱fx编程手册 编辑:程序博客网 时间:2024/06/09 20:01

题意:将一个矩形平分成n份,要求每条平分线的起点都要是门所在的点,答案逆时针方向输出

代码如下:

#include<cstdio>#include<iostream>#include<cstring>#include<cmath>using namespace std;const double eps=1e-6;int dcmp(double x){    if(fabs(x)<eps)return 0;    else return x<0?-1:1;}int main(){ //   freopen("data.txt","r",stdin);    double width,height,door,workers;    while(scanf("%lf%lf%lf%lf",&width,&height,&door,&workers))    {        if(width==0&&height==0&&door==0&&workers==0)break;        double area=width*height;        area/=workers;        double d1=width-door;        double prex=width;        double prey=0;        for(int i=0;i<workers-1;++i)        {            double tmp=area;            double x,y;            if(dcmp(prey-height)!=0)            {                if(dcmp(prex-width)==0)                {                    x=width;                    y=2*tmp/d1+prey;                    if(y>height)                    {                        tmp-=(height-prey)*d1/2;                        y=height;                        x=width-tmp*2/y;                    }                }                else if(dcmp(prex)==0)                {                    x=0;                    y=prey-2*tmp/door;                }            }            else            {                y=height;                x=prex-tmp*2/height;                if(x<0)                {                    tmp=tmp-prex*prey/2;                    x=0;                    y=height-tmp*2/door;                }            }            prex=x;            prey=y;            printf("%.3lf %.3lf ",x,y);        }        printf("\n");    }    return 0;}


0 0
原创粉丝点击