HDU 1222 Wolf and Rabbit (擴充套件歐幾里德應用)
Wolf and Rabbit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6292 Accepted Submission(s): 3142
Problem Description
There is a hill with n holes around. The holes are signed from 0 to n-1.
![](https://i.iter01.com/images/286f4d280692f18234e649a1e2b76c180cdc8884ddf7da03bb7866ed5ce24437.jpg)
A rabbit must hide in one of the holes. A wolf searches the rabbit in anticlockwise order. The first hole he get into is the one signed with 0. Then he will get into the hole every m holes. For example, m=2 and n=6, the wolf will get into the holes which are signed 0,2,4,0. If the rabbit hides in the hole which signed 1,3 or 5, she will survive. So we call these holes the safe holes.
![](https://i.iter01.com/images/286f4d280692f18234e649a1e2b76c180cdc8884ddf7da03bb7866ed5ce24437.jpg)
A rabbit must hide in one of the holes. A wolf searches the rabbit in anticlockwise order. The first hole he get into is the one signed with 0. Then he will get into the hole every m holes. For example, m=2 and n=6, the wolf will get into the holes which are signed 0,2,4,0. If the rabbit hides in the hole which signed 1,3 or 5, she will survive. So we call these holes the safe holes.
Input
The input starts with a positive integer P which indicates the number of test cases. Then on the following P lines,each line consists 2 positive integer m and n(0<m,n<2147483648).
Output
For each input m n, if safe holes exist, you should output "YES", else output "NO" in a single line.
Sample Input
2
1 2
2 2
Sample Output
NO
YES
Source
杭州電子科技大學第三屆程式設計大賽
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1222
題目大意:n個數0 ~ n-1,現在從0開始每次可到距離自己逆時針方向m個數的地方,問是否有數字能不被訪問到
題目分析:題是水題,yy一下就能出來,gcd(n, m) == 1時都能被訪問到,下面給出證明:
顯然走了a次m步所到的位置為pos = am % n = am - (am / n) * n,令am / n = -b,可以得到pos = am + bn (b < 0,0 <= pos < n),根據擴充套件歐幾里德演算法我們知道對於不定方程am + bn = gcd(n, m) = pos一定有解,因此只要是gcd(n, m)的倍數的數都能被訪問到,所以當gcd(n, m) = 1時,pos可以為0 ~ n - 1的任意一個
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1222
題目大意:n個數0 ~ n-1,現在從0開始每次可到距離自己逆時針方向m個數的地方,問是否有數字能不被訪問到
題目分析:題是水題,yy一下就能出來,gcd(n, m) == 1時都能被訪問到,下面給出證明:
顯然走了a次m步所到的位置為pos = am % n = am - (am / n) * n,令am / n = -b,可以得到pos = am + bn (b < 0,0 <= pos < n),根據擴充套件歐幾里德演算法我們知道對於不定方程am + bn = gcd(n, m) = pos一定有解,因此只要是gcd(n, m)的倍數的數都能被訪問到,所以當gcd(n, m) = 1時,pos可以為0 ~ n - 1的任意一個
#include <cstdio>
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int main()
{
int T, n, m;
scanf("%d", &T);
while(T--)
{
scanf("%d %d", &n, &m);
printf("%s\n", gcd(n, m) == 1 ? "NO" : "YES");
}
}
相關文章
- 擴充套件歐幾里得套件
- 淺談擴充套件歐幾里得演算法套件演算法
- 擴充套件歐幾里得演算法公式快速推導套件演算法公式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- 數論學習筆記 (4):擴充套件歐幾里得演算法筆記套件演算法
- 歐幾里德的遊戲遊戲
- VSCode擴充套件應用VSCode套件
- [待更新]歐幾里得演算法(輾轉相除法)與擴充歐幾里得演算法演算法
- 數論入門基礎(同餘定理/費馬小定理/擴充套件歐幾里德演算法/中國剩餘定理)套件演算法
- 第六章 數學問題 -------- 6.5 歐幾里得演算法及其擴充套件演算法套件
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- 第六章 數學問題 -------- 6.7【擴充套件歐幾里得】一步之遙套件
- easyui應用(四)--- easyui擴充套件UI套件
- 並查集擴充套件應用並查集套件
- chrome擴充套件應用開發快速科普Chrome套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- Kotlin的幾個擴充套件函式Kotlin套件函式
- 2.3.2.4 擴充套件 Data-Linked 應用程式物件套件物件
- c# 高階應用 理解擴充套件方法C#套件
- 如何在AWS上自動擴充套件Web應用套件Web
- plain framework的實際應用和擴充套件AIFramework套件
- laravel框架應用和composer擴充套件包開發Laravel框架套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 凱捷:擴充套件製造業AI應用報告套件AI
- 如何構建可控,可靠,可擴充套件的 PWA 應用套件
- Flutter 應用程式建立一個擴充套件皮膚列表Flutter套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- ORACLE 擴充套件Oracle套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 5.4 多鏈:區塊鏈應用的擴充套件互動區塊鏈套件
- Minecraft中ScoreBoard的底層實現與擴充套件應用Raft套件
- 使用View modification擴充套件SAP Fiori應用的一個案例View套件
- Airflow 中文文件:用Dask擴充套件AI套件