题目:http://codeforces.com/contest/374/problem/A
题意:求到达边界的最小步数。。
刚开始以为是 bfs,不过数据10^6太大了,肯定不是。。。
一个思维题,要注意超边界。。。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std; const int INF=(<<);
int n,m,x,y,a,b; int ok(int x1,int y1)
{
if(x1<) x1=-x1;
if(y1<) y1=-y1;
if(x1%a==&&y1%b==)//能恰好 到达边界
{
if((x1/a-y1/b)%==)//而且两个的差为偶数。。
{
if(x1/a>y1/b)
return x1/a;
else
return y1/b;
}
}
return INF;
}
int main()
{
int d[];
while(cin>>n>>m>>x>>y>>a>>b)
{
if((x==&&y==m)||(x==n&&y==)||(x==n&&y==m)||(x==&&y==))
{
cout<<""<<endl;
continue;
}
if(a>=n||b>=m)//有可能一步就会越界。。
{
cout<<"Poor Inna and pony!"<<endl;
continue;
}
d[]=ok(x-,y-m);
d[]=ok(x-n,y-);
d[]=ok(x-n,y-m);
d[]=ok(x-,y-);
sort(d,d+);
if(d[]==INF)
cout<<"Poor Inna and pony!"<<endl;
else
cout<<d[]<<endl;
}
return ;
}