2014校选题(五) -- 约瑟夫环问题


题目五

周末了,ACM训练队的队员准备玩玩游戏,娱乐一下,队长想了一个好主意,所有队员站成一个圈,从1开始报数,凡是报出指定数字的人要出列。有人出列后,下个人重新从1开始报数。最后一位“幸存者”要给大家表演个节目。由于队员正在不断的壮大,小张想知道他是否需要准备表演,请你设计个程序,帮他确定他是否是“幸存者”。

【输入】

第一行是n,有n次游戏,第二行是 m   x,表示某次游戏有m个人,指定被请出列的数字为x。其中n<100,m<1000

输出

最后幸存的那位的原来的号码。

【样例输入】

 1

 10   5

样例输出

3


#include <stdio.h>

int main()
{
	int n;
	int i = 0;

	scanf("%d", &n);

	while (i < n)
	{
		int m;    //人数
 		int x;    //指定出列的数字
		int j;

		int a;  //结果

		scanf("%d%d", &m, &x);  // 人数  出列的数字

		a = 1;

		for (j=2; j<=m; j++)
		{
			a = (a + x - 1) % j + 1;  //为了防止 if (f[n]==0) f[n]=n;
		}

		printf("%d\n", a);


		i++;
	}

	return 0;
}


简化    可以先以0-n-1的方式排成序列 最后结果加1

#include <stdio.h>

int main()
{
	int n;
	int i = 0;

	scanf("%d", &n);

	while (i < n)
	{
		int m;    //人数
 		int x;    //指定出列的数字
		int j;

		int a;  //结果

		scanf("%d%d", &m, &x);  // 人数  出列的数字

		a = 0;

		for (j=2; j<=m; j++)
		{
			a = (a + x ) % j; 
		}

		printf("%d\n", a+1);


		i++;
	}

	return 0;
}


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计选题系统是一个用于管理学生毕业设计选题的系统,在该系统中,学生可以浏览和选择感兴趣的毕业设计选题,并向指导教师提交选题申请。为了更好地理解和设计该系统,可以使用E-R图进行建模。 E-R图是一种用于描述实体与实体之间关系的图形化工具。对于毕业设计选题系统,可以识别出以下实体和关系: 1. 实体:学生、选题、指导教师、系部 - 学生是该系统的一个重要实体,具有属性如学号、姓名、专业等; - 选题是学生选择的某个毕业设计主题,具有属性如题目、描述、难度等; - 指导教师是负责指导学生进行毕业设计的教师,具有属性如工号、姓名、职称等; - 系部是学的一个组织机构,负责管理学生的毕业设计,具有属性如系号、名称、联系方式等。 2. 关系:选择、指导 - 选择关系表示学生与选题之间的选择关系,一个学生可以选择一个或多个选题,一个选题也可以被多个学生选择; - 指导关系表示指导教师与学生之间的指导关系,一个指导教师可以指导一个或多个学生,一个学生也可以被一个或多个指导教师指导。 通过以上实体和关系的识别,可以绘制E-R图。图中使用方框表示实体,菱形表示关系,箭头表示关系的方向。 在系统的逻辑设计和数据库建模阶段,E-R图可以帮助开发人员更好地理解和设计系统的实体和关系,从而进行数据库表的设计和系统流程的优化。 总之,通过E-R图对毕业设计选题系统进行建模可以帮助开发人员从宏观角度把握系统的核心实体、关系和流程,为后续的系统设计和开发提供了指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值