注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Yavin(某沙茶的代码库)

Star Wars fan and OIer

 
 
 

日志

 
 

SGU150  

2012-02-27 18:26:06|  分类: SGU100系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
简单暴力,注意细节

#include<cstdio>
#include<cmath>

const double EPS=1e-10;
double xs,xt,ys,yt;
double x,y,k;
double a,b,c;
int n;

void swap(double &a,double &b)
{
double t=a;a=b;b=t;
}

void get(double xs,double ys,double xt,double yt,double& a,double& b,double& c)
{
c=(ys*xt-yt*xs);
b=(xt-xs);
a=(ys-yt);
}

int place(double y)
{
if(y-floor(y)<EPS)return 0;
else return ceil(y);
;}

int main()
{
freopen("150.in","r",stdin);freopen("150.out","w",stdout);
scanf("%lf %lf %lf %lf %d",&xs,&ys,&xt,&yt,&n);
if((xs==xt||ys==yt)&&(x!=y))
printf("no solution\n");
else
{
int qx,qy;
x=fabs(xs-xt);y=fabs(ys-yt);
if(x<y)swap(x,y);
k=y/x;
double nowx,nowy;
int lastx=0,lasty=0,nx,ny,tot=0,ansx,ansy;
for(nowx=1;nowx<=x;nowx+=1)
{
nowy=nowx*k;
nx=nowx;ny=place(nowy);
if(ny==0)continue;
if(nx!=lastx||ny!=lasty)
{
++tot;
if(tot==n){qx=nx;qy=ny;}
}
++tot;++nx;
if(tot==n){qx=nx;qy=ny;}
lastx=nx;lasty=ny;
}
if(x==y)
{
qx=n;qy=n;
tot=(int)y;
}
/*...................................................*/
if(tot<n)
{
printf("no solution\n");
return 0;
}
x=fabs(xs-xt);y=fabs(ys-yt);
if(xs<xt&&ys<yt)
{
if(x>y)
ansx=xs+qx-1,ansy=ys+qy-1;
else ansx=xs+qy-1,ansy=ys+qx-1;
}else if(xs<xt&&ys>yt)
{
if(x>y)
ansx=xs+qx-1,ansy=ys-qy;
else ansx=xs+qy-1,ansy=ys-qx;
}else if(xs>xt&&ys<yt)
{
if(x>y)
ansx=xs-qx,ansy=ys+qy-1;
else ansx=xs-qy,ansy=ys+qx-1;
}else if(xs>xt&&ys>yt)
{
if(x>y)
ansx=xs-qx,ansy=ys-qy;
else ansx=xs-qy,ansy=ys-qx;
}
/*...................................................*/
printf("%d %d\n",ansx,ansy);
}
return 0;
}

  评论这张
 
阅读(159)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018