小hi被壞女巫抓進一座由無限多個格仔組成的矩陣迷宮。
小hi一開始處於迷宮(x, y)的位置,迷宮的出口在(a, b)。小hi發現迷宮被女巫施加了魔法,假設當前他處在(x, y)的位置,那麼他只能移動到(x+y, y)或者(x, x+y)的位置上。
小hi想知道自己能不能逃離迷宮。
第一行包含乙個整數t,代表測試資料的組數。
以下n行每行包含4個整數x, y, a, b,表示起點在(x, y),出口在(a, b)。
對於30%的資料,1 ≤ t ≤ 10, 1 ≤ x, y, a, b ≤ 100
對於80%的資料,1 ≤ t ≤ 1000, 1 ≤ x, y, a, b ≤ 1000
對於100%的資料,1 ≤ t ≤ 10000, 1 ≤ x, y, a, b ≤ 109
對於每組資料輸出一行yes或者no,表示小hi是否能逃離迷宮。
2
1 1 8 13
2 2 100 101
yes
no
倒著考慮,就是每次
\[(a,b) \rightarrow (a-b,b)
\]或者
\[(a,b) \rightarrow (a,b-a)
\]每次都是大的減小的,而且每次都得減到小於等於小的那個數。
如果(a,b)都沒有與(x,y)相等,直接取模就好,因為大的一直要減小的,而且這其中不會出現(x,y)。
如果(a,b)其中乙個與(x,y)相等,那麼另乙個與之差值只有在能夠整除它的情況下,才會得到(x,y)。
#include #define ll long long
#define inf 1000000000
#define pi acos(-1)
#define bug puts("here")
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dep(i,n,x) for(int i=n;i>=x;i--)
#define mem(a,x) memset(a,x,sizeof(a))
using namespace std;
inline int read()
while(ch>='0'&&ch<='9')
return x*f;
}int x,y;
bool check(int a,int b)else
return false;
}int main()
return 0;
}
hihocoder 1519 逃離迷宮II
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi被壞女巫抓進裡一間有n x m個格仔組成的矩陣迷宮。有些格仔是小hi可以經過的,我們用 表示 有些格仔上有障礙物小hi不能經過,我們用 表示。小hi的起始位置用 s 表示,他需要到達用 t 表示的格仔才能逃離迷宮。麻...
hihocoder 1519 逃離迷宮II
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi被壞女巫抓進裡一間有n x m個格仔組成的矩陣迷宮。有些格仔是小hi可以經過的,我們用 表示 有些格仔上有障礙物小hi不能經過,我們用 表示。小hi的起始位置用 s 表示,他需要到達用 t 表示的格仔才能逃離迷宮。麻煩的...
dfs bfs 逃離迷宮
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...