C语言编程:下面要求的题目怎么做?
问题描述:一个班有n个座位,编号为:1~n。每个座位坐一个同学。老师为了公平,力求平均提问所有学生,选择方法如下:1)从第一个座位号开始,往后数到m时提问该同学并标记该同...
问题描述:
一个班有n个座位,编号为:1~n。 每个座位坐一个同学。老师为了公平,力求平均提问所有学生,选择方法如下:
1)从第一个座位号开始,往后数到m时提问该同学并标记该同学以后不再被提问。
2)从提问过的下一个座位开始数,重复步骤1)。
3) 如果数到最后一个座位还没有到m则返回到第一个同学继续数到m提问该同学。
4)求最后一位被提问的座位号。
注:请验证——
A) n=40, m=5;结果是16。
B)n=51, m=7;结果是8。 展开
一个班有n个座位,编号为:1~n。 每个座位坐一个同学。老师为了公平,力求平均提问所有学生,选择方法如下:
1)从第一个座位号开始,往后数到m时提问该同学并标记该同学以后不再被提问。
2)从提问过的下一个座位开始数,重复步骤1)。
3) 如果数到最后一个座位还没有到m则返回到第一个同学继续数到m提问该同学。
4)求最后一位被提问的座位号。
注:请验证——
A) n=40, m=5;结果是16。
B)n=51, m=7;结果是8。 展开
1个回答
展开全部
应用同余定理,可以比较简单地求出。其实是个老题目,说法略不同而已——
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int n,m,ans,i;
printf("Please enter n & m(int n,m>0)...\n");
if(scanf("%d%d",&n,&m)==2 && n>0 && m>0){
ans=0;
for(i=1;i<=n;i++)
ans=(ans+m)%i;
printf("\nThe result is %d\n",ans%n+1);
}
else
printf("Input error, exit...\n");
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询