2007 NPSC E. 東方幻想鄉
/***********************************************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
int n,t;
long long int px,py,x,y,vx,vy;
while(scanf("%d %d %d %d",&n,&t,&px,&py)==4&&n!=0)
{
int a,b,c,hit=0;
for (a=0;a<n;a++)
{
scanf("%d %d %d %d",&x,&y,&vx,&vy);
if(hit==1) continue;
vx=x+t*vx;
vy=y+t*vy;
int x1=x,x2=vx,x3=px,y1=y,y2=vy,y3=py;
if((x1-x2)*(y3-y1)==(x3-x1)*(y1-y2)&&((x3>=x1&&x3<=x2)||(x3>=x2&&x3<=x1))&&((y3<=y2&&y3>=y1)||(y3<=y1&&y3>=y2)))
hit=1;
}
if(hit==1) printf("true\n");
else printf("false\n");
}
return 0;
}
/********************************/
輸入太多,來個優化輸入吧!
#include<stdio.h>
#include<stdlib.h>
int input()
{
char cha;
int x=0,flag=1;
while(cha=getchar())
if(cha!=' '&&cha!='\n') break;
if(cha!='-')
x=x*10+cha-48;
else flag=-1;
while(cha=getchar())
{
if(cha==' '||cha=='\n') break;
x=x*10+cha-48;
}
return x*flag;
}
main()
{
int n,t;
long long int px,py,x,y,vx,vy;
while(scanf("%d %d %d %d",&n,&t,&px,&py)==4&&n!=0)
{
int a,b,c,hit=0;
for (a=0;a<n;a++)
{
x=input();
y=input();
vx=input();
vy=input();
if(hit==1) continue;
vx=x+t*vx;
vy=y+t*vy;
int x1=x,x2=vx,x3=px,y1=y,y2=vy,y3=py;
if((x1-x2)*(y3-y1)==(x3-x1)*(y1-y2)&&((x3>=x1&&x3<=x2)||(x3>=x2&&x3<=x1))&&((y3<=y2&&y3>=y1)||(y3<=y1&&y3>=y2)))
hit=1;
}
if(hit==1) printf("true\n");
else printf("false\n");
}
return 0;
}
上一篇:2007 NPSC D. MVP