首页 > 代码库 > 武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)习题6.11
武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)习题6.11
Problem Description
n个人围成一圈,依次从1至n编号。从编号为1的人开始1至k报数,凡报数为k的人退出圈子,输出最后留下的一个人原来的编号。
Input
首先输入一个t,表示有t组数据(1<= t <= 10010)
然后有t行,每行有2个正整数n和k。(1<= n,k<= 20)
Output
对于每组测试数据,输出一个数,表示最后留下来的人的编号。
Sample Input
310 37 15 4
Sample Output
471
HINT
例如第三组样例:5个人围成一圈,编号1-5。第一轮报数4号出列,第二轮从5开始报数1,3报4,3出列,第三轮从5开始报1,5报4,5出列,第四轮1开始报1,2报4,2出列,最后剩下的为1号。
1 #include <stdio.h> 2 int main() 3 { 4 int i,j,m,out,n,num[100],*p; 5 int count; 6 while(scanf("%d",&count)!=EOF) 7 { 8 for(int k=0;k<count;k++) 9 {10 scanf("%d%d",&n,&m);11 p=num;12 for(i=0;i<n;i++)13 *(p+i)=i+1;14 i=0;15 j=0;16 out=0;17 while(out<n-1)18 {19 if(*(p+i)!=0)20 j++;21 if(j==m)22 { 23 24 *(p+i)=0;25 j=0;26 out++; 27 }28 i++;29 if(i==n)30 i=0;31 }32 while(*p==0)33 p++;34 printf("%d\n",*p);35 36 } 37 38 }39 40 return 1;41 }
武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)习题6.11
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。