1049.盒饭
Description
有n个饭盒放成一排,其中第m个饭盒里多了一块牛肉。鲁观特别想吃带牛肉的那盒饭,但食堂阿姨说他只能先打开第一个饭盒,然后再向前移动两个饭盒,再向前移动三个饭盒,依此类推。当到达最后一个饭盒的时候,再回到第一个饭盒继续寻找,一共只允许找2 * m次。请你帮鲁观判断下是否能找到带牛肉的饭盒。
Input
第一行饭盒数n,第二行有牛肉的饭盒m
(0 < n < 1000, 0 <= m < n)
Output
如果能吃到,输出"Y",如果不能吃到,输出"N"
Sample Input
5 3
Sample Output
Y
Hint
初始状态为第0个饭盒。
对于样例,一开始位置在第0个饭盒,第一次访问第1个饭盒,第二次访问第3个饭盒,可以找到。
对于样例,一开始位置在第0个饭盒,第一次访问第1个饭盒,第二次访问第3个饭盒,可以找到。
Source
嘤嘤嘤 这个题好坑啊 也不是坑 我语文不好我可看不懂
当到达最后一个饭盒的时候,再回到第一个饭盒继续寻找 感觉这句话有歧义hhhhhh
上代码。
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<string.h> 5 using namespace std; 6 int pos,m,cnt,i,n; 7 bool flag; 8 int main() 9 { 10 while(scanf("%d",&n)!=EOF) 11 { 12 scanf("%d",&m); 13 cnt=0; 14 flag=0; 15 i=0; 16 while(cnt<2*m)//2m次循环 17 { 18 pos=0; 19 cnt++; 20 while(pos<=n-1)//因为饭盒编号是0到n-1 21 { 22 pos+=i; 23 ++i; 24 if(pos==m) 25 { 26 flag=1; 27 } 28 } 29 } 30 if(flag) 31 { 32 cout<<'Y'<<' '; 33 } 34 else 35 { 36 cout<<'N'<<' '; 37 } 38 } 39 return 0; 40 }