当前位置:首页 > C++目录 > 正文内容

【题解】小X玩游戏

亿万年的星光4年前 (2022-02-19)C++目录3334

【题目描述】

小X喜欢玩游戏。 
 这天,小X觉得传统的游戏都玩腻了,自己随手在草稿纸上画了一行N个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初始前进方向为向右,游戏共进行M轮,第i轮玩家前进Ai格,若玩家到达格子N则改变前进方向为向左,若玩家到达格子1则改变前进方向为向右。 
小X想知道玩家最后会停在哪个格子,但这个游戏太漫长了,他已经玩得快睡着了,希望你帮帮他。

【输入描述】

第一行包含用一个空格隔开的两个整数N,M。 
接下来M行,第i行包含一个整数Ai。

【输出描述】

第一行包含一个整数,表示玩家最后停留的格子编号。

【样例输入】

3 2
2
3

【样例输出】

2

【提示】

样例说明
   玩家的路线为 1->2->3->2->1->2。

【数据范围】

  对于30%的数据,N=2,M≤10,Ai=1。
   对于60%的数据,N≤1000,M≤1000,Ai≤1000。
   对于 100%的数据,2≤N≤100000,1≤M≤100000,1≤Ai≤1000000000。

【题目分析】



#include <bits/stdc++.h>
using namespace std;

int main(){
	long long n,m,s,i,x,r;
	cin>>n>>m;
	s = 0;
	
	//m次移动
	for(i = 1;i <= m;i++){
		cin>>x;
		s = s + x; 
	}
	
	//去掉完整的若干来回,实际还需要走几个格子
	s = s % ((n - 1) * 2); 
	//如果是向右能走完
	if(s <= n - 1){
		r = 1 + s;
	} else{
		r = n - s % (n - 1);
	}
	cout<<r<<endl;
	
	return 0;
}



    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    组合数的写法

    前面我们写过 全排列和排列数 等。这篇文章。我们写一下组合数。例题:从n个数中,选出m个,一共有多少种不同的选法?这是一道典型的组合数公式。我们直接用dfs公式肯定会出现重复的。#include<...

    【算法】扩展欧几里得算法

    一、欧几里得算法我们前面学过求最大公约数的算法:欧几里得算法(又叫辗转相除法) ,一般缩写是gcd,在C++中经常写成如下形式:int gcd(int a,int b)...

    取模运算总结——数论

    编程竞赛有相当一部分题目的结果过于庞大,整数类型无法存储,往往只要求输出取模的结果。例如(a+b)%p,若a+b的结果我们存储不了,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模,b取模...

    【数据结构】栈—表达式括号匹配

    【数据结构】栈—表达式括号匹配

    【题目描述】假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则...

    如何计算一个程序的运行时间(防止超时)

    再一些OJ系统中,做题的时候常常会超时,但是很多人不知道自己的程序是否会超时,不知道如何检查自己的程序。这篇文章主要介绍几种监测自己程序运行时间的程序。头文件<time.h> ...

    Code::Blocks下载安装教程

    Code::Blocks下载安装教程

    Code::Blocks 是一款免费、开源且跨平台的 C/C++ 集成开发环境。它支持 Windows、Linux 和 macOS 等多种操作系统,核心特点是轻量快速、纯专注于 C/C++ 开发,并内...