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; }
凡是围成圈的应当想到对圈中元素个数取余,并注意做减法时的情况。