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.
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.
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");
}
}
相關文章
- 【杭電oj】1222 - Wolf and Rabbit(GCD)GC
- 學習筆記----擴充套件歐幾里德筆記套件
- 【總結】理解歐幾里德及擴充套件歐幾里德演算法套件演算法
- One Person Game(zoj3593+擴充套件歐幾里德)GAM套件
- C Looooops(poj2115+擴充套件歐幾里德)OOP套件
- VSCode擴充套件應用VSCode套件
- easyui應用(四)--- easyui擴充套件UI套件
- 並查集擴充套件應用並查集套件
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- [譯]擴充套件 Node.js 應用套件Node.js
- chrome擴充套件應用開發快速科普Chrome套件
- iOS Extension擴充套件開啟宿主應用iOS套件
- 伸縮擴充套件Node.JS應用套件Node.js
- 使用Slice擴充套件伸縮OpenJPA 應用套件
- HDU 3234 Exclusive-OR 擴充套件並查集套件並查集
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- hdu Yet another end of the world(擴充套件歐幾里得定理推論)套件
- plain framework的實際應用和擴充套件AIFramework套件
- c# 高階應用 理解擴充套件方法C#套件
- 前端打包成桌面應用、以及chrome擴充套件前端Chrome套件
- Ruby Ruport實踐—Ruport::Formatter應用擴充套件ORM套件
- 構建可擴充套件的應用(一) (轉)套件
- 如何在AWS上自動擴充套件Web應用套件Web
- POJ 2115-C Looooops-擴充套件歐幾里德演算法OOP套件演算法
- 2.3.2.4 擴充套件 Data-Linked 應用程式物件套件物件
- 6個強大的AngularJS擴充套件應用AngularJS套件
- .Net開發筆記(十七) 應用程式擴充套件筆記套件
- 15 個 Angular.js 應用擴充套件指令解析AngularJS套件
- 利用”視窗小部件“擴充套件 Lotus Symphony 應用套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 凱捷:擴充套件製造業AI應用報告套件AI
- Flutter 應用程式建立一個擴充套件皮膚列表Flutter套件
- 如何構建可控,可靠,可擴充套件的 PWA 應用套件
- laravel框架應用和composer擴充套件包開發Laravel框架套件
- Sanic 擴充套件套件