【模拟】桐桐的游戏

匿名 (未验证) 提交于 2019-12-02 23:43:01

题目描述

桐桐最近在玩一个跳棋游戏,规则是:有个圆圈,分成N等分,顺时针标号为1到N。假设其中有些段的障碍。桐桐从1号段出发,每次顺时针跳K段,目标是跳到第Z号段,但过程中不能跳到障碍段上去。
假如,N=13,K=3,Z=9,则跳的路径上的段号为1,4,7,10,13,3,6和9,在此假设没有跳到障碍段上去。
现在请帮桐桐求出最小的K。

输入

第一行有整数N,Z和M(2≤N≤1000,2≤Z,0≤M≤N-2)。
N表示圆分成的段数,Z表示桐桐想跳到的目标段号,M表示障碍数。
第二行有M个数,表示有障碍的段号。段1和段Z保证没有障碍。

输出

一个数K。

输入样例#1
 7 4 1  6 
输入样例#2
 9 7 2  2 3 
输入样例#3
 7 6 2  2 4 
输出样例#1
 1 
输出样例#2
 3 
输出样例#3
 5  

˼·

模拟!上!

#include<Algorithm> #include<Iostream> #include<Cstring> #include<Cstdio> int Ans,n,m,k,l; int A[1250]; bool F; int main() { 	scanf("%d%d%d",&n,&k,&m); 	if(m==n-2){printf("%d",k-1);return 0;} 	if(!m){printf("%d",1);return 0;} 	for(int i=1;i<=m;++i) 	{ 		scanf("%d",&l); 		A[l]=1; 	} 	while(1) 	{ 		Ans++; 		l=1; 		F=0; 		while(1) 		{ 			l+=Ans; 			if(l>n)l=l-n; 			if(l==k){F=1;break;} 			if(A[l] || l==1)break; 		} 		if(F)break; 	} 	printf("%d",Ans); 	return 0; } 
文章来源: https://blog.csdn.net/SSL_wujiajie/article/details/92113024
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!