问题 G: 圆桌上的晚餐

问题 G: 圆桌上的晚餐

时间限制: 1 Sec  内存限制: 128 MB
提交: 1583  解决: 656
[提交] [状态] [命题人:jsu_admin]

题目描述

        大家一定在圆桌上吃过饭了,现在问题很简单,n个人坐在一个圆桌旁,其中有一些人是吃饱了的。那么当服务员端菜到某个人面前的时候,如果这个人吃饱了的话,那么这个人就会进行‘战术谦让’把菜端到下一个人的面前,如此反复直到这个菜遇到还没有吃饱的人的面前的时候,这个菜就会被吃掉。那么这个菜到底会被哪个人吃掉呢。

输入

 输入有多组数据 每组数据第一行有一个n,表示有n个人(1<= n <=1000)
 第二行有一个m表示菜会被端到第m个人面前(1<= m <= n)
 第三行有n个数字表示每个人的状态0表示还没有吃饱,1表示已经吃饱了
 (编号从1开始,第n个人下一个人是第一个人)

输出

    输出最终吃掉这个菜的人的编号答案一定存在

样例输入 Copy

5 
5
0 0 0 0 1
5 
3
1 0 1 1 1

样例输出 Copy

1
2

因为数据量不大,我们可以直接循环暴力,到达 n+1 的时候把位置置为 1

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main(){
 4     int n;
 5     int m;
 6     int a[1010];
 7     while(scanf("%d",&n)!=EOF)
 8     {
 9         memset(a,0,sizeof(a));
10         scanf("%d",&m);
11         for(int i = 1 ;i<=n;i++){
12             scanf("%d",&a[i]);
13         }
14         bool flag = false;
15         int i = m; 
16         while(!flag){
17             if(a[i]==0){
18                 a[i] = 1;
19                 flag = true;
20                 break;
21             }
22             i++;
23             if(i==n+1)
24             {
25                 i = 1;
26             }
27         }
28         printf("%d\n",i);
29     }
30 }
View Code
 

猜你喜欢

转载自www.cnblogs.com/DWVictor/p/10202504.html