Codevs 1512转向游戏 题解

 时间限制: 1 s

 空间限制: 1000 KB

 题目等级 白银 Silver

题解

题目描述 Description

小明自认为方向感很好,请小红来测试。小红先让小明面对北方立正站好,然后发出“向左转”“向右转”或“向后转”的命令。每个命令执行后,小明都正确地说出了他面对的方向。小红的命令共N个(1≤n≤10000),请你统计小明说【南】的次数。

命令是以数字方式表达:

0---向左转

1---向右转

2---向后转

如小红发出的5个命令:0 1 0 0 1 ;小明共有5个回答:西 北 西 南 西

输入描述 Input Description

2行

第一行:正整数n,1≤n≤10000

第二行:n个用0 1 2表示的指令

输出描述 Output Description

一个整数,小明说“南”的次数

样例输入 Sample Input

5

0 1 0 0 1

样例输出 Sample Output

1


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int n,a,i,num,ans;

int main(){
	cin >> n;
	num=0;ans=0;
	for(i=1;i<=n;i++)
	{
	cin >> a;
	if(a==0)a=-1;
	num=(num+a+4)%4;//负数的取余
	if(num==2)ans++;
	}
	cout<<ans;
	return 0;
}

凡是围成圈的应当想到对圈中元素个数取余,并注意做减法时的情况。