首页 > 代码库 > HDU 2104 hide handkerchief(辗转相除法--GCD)
HDU 2104 hide handkerchief(辗转相除法--GCD)
hide handkerchief |
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 4693 Accepted Submission(s): 1547 |
Problem Description The Children’s Day has passed for some days .Has you remembered something happened at your childhood? I remembered I often played a game called hide handkerchief with my friends. Now I introduce the game to you. Suppose there are N people played the game ,who sit on the ground forming a circle ,everyone owns a box behind them .Also there is a beautiful handkerchief hid in a box which is one of the boxes . Then Haha(a friend of mine) is called to find the handkerchief. But he has a strange habit. Each time he will search the next box which is separated by M-1 boxes from the current box. For example, there are three boxes named A,B,C, and now Haha is at place of A. now he decide the M if equal to 2, so he will search A first, then he will search the C box, for C is separated by 2-1 = 1 box B from the current box A . Then he will search the box B ,then he will search the box A. So after three times he establishes that he can find the beautiful handkerchief. Now I will give you N and M, can you tell me that Haha is able to find the handkerchief or not. If he can, you should tell me "YES", else tell me "POOR Haha". |
Input There will be several test cases; each case input contains two integers N and M, which satisfy the relationship: 1<=M<=100000000 and 3<=N<=100000000. When N=-1 and M=-1 means the end of input case, and you should not process the data. |
Output For each input case, you should only the result that Haha can find the handkerchief or not. |
Sample Input 3 2 -1 -1 |
Sample Output YES |
Source HDU 2007-6 Programming Contest |
Recommend xhd 题目大意及思路: 给你两个数N,M,求是否在N的范围内不断的循环可以把这些数都遍历一遍,每次移动M步,其实只要两个数互质,经过转N次之后,每个数字都会被访问到。 #include<iostream> #include<cstdio> using namespace std; int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF&&(m!=-1||n!=-1)){ while(n%m!=0){//辗转相除法. m=n%m;n=m; } if(m==1) printf("YES\n"); else printf("POOR Haha\n"); } return 0; } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。