青少年编程知识记录 codecoming

【题解】小X玩游戏

【题目描述】

小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;  }





(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:C++知识 浏览: