8631 盒子上的蚂蚁

SCAU 8631 盒子上的蚂蚁

8631 盒子上的蚂蚁

时间限制:500MS 内存限制:1000K 提交次数:0 通过次数:0

题型: 编程题 语言: 无限制

Description2009 年国际ACM 程序设计大赛在中国的最后一场regional于11月8日结束,随着在这场比赛中获得的一枚金牌,SCAU以两金两银的成绩,结束了09年的所有赛事。大家就回到正常的上课时间了。生活总是十分枯燥的,特别是比赛刚结束的时候,因为空出了很多平常训练的时间,而又想好好放松一下。所以,suno去玩dota去了,kicd去玩波斯王子去了,zayhero准备去hk的论文,zjx20去玩机械迷城,livingroom看他的动漫去了,Arokenda去玩KOF去了,ipc和bm 也各玩各的去了……还有dragon123、pkkj、ick2 三个人正在抓紧时间尽情忽悠,完了之后就要开始地狱式的训练,准备World Final去了。总之,大家都玩去了,就剩下lyd 一个人很无聊不知道干啥。。。接着他看到桌子上有只蚂蚁,就抓来玩,好吧有够无聊的。。。Lyd 把那只可怜的蚂蚁放在一个正方体的盒子上,然后让它不断地在盒子上面爬-_-!!!在蚂蚁爬的时候,Lyd 还不停的转动盒子,然后他想知道在转动的过程中,蚂蚁会有多少次出现在盒子的顶部。每一秒蚂蚁会爬过一个面,而且它只会向前走,不会转弯,每一秒的同时Lyd 也会将盒子朝任意方向转动90 度。为了方便,我们对六个面分别定义为正面(面向Lyd),背面(正面的反面),左面(正面左方),香港空间,右面(正面右方),顶(正面上方)和底(正面下方),香港虚拟主机,并特指某整数时刻。而蚂蚁处在0 时刻的正面,且头朝上。

同时,6 个转动方向如下:正面向左(即转动之后原先的正面变成了左面,美国服务器,其他依次类推)、正面向右、正面向上、正面向下、正面顺时针(绕正面的法线顺时针转)、正面逆时针。现给出Lyd 的转动次序,求蚂蚁出现在盒子的顶的次数。Hint第二个Sample转动如下:

在3、4 秒的时候蚂蚁在顶。

Input有多组测试数据(2000 组左右),每组测试数据有两行第一行是lyd 的转动次数n(1<=n<=1000)。第二行有n 个数,第i 个数表示第i 个动作。1 到6 分别表示正面向左、正面向右、正面向上、正面向下、正面顺时针、正面逆时针。数据读入以文件结束符结束。即输入输出类似如下(当然变量名啥的不必一样,VC下按ctrl+z 然后回车可结束程序):while(scanf(“%d”,&n)!=EOF){for(i=1;i<=n;i++)scanf(“%d”,&act[i]);…………printf(“%d\n”,answer);}

Output对于每组测试数据,只输出一行,每行一个数,表示蚂蚁出现在顶多少次。

Sample Input1155 2 3 6 1Sample Output12HintSource

lyd

Provider

admin

#include<stdio.h>#include<string.h>void Traverse(int *temp, int *result, int act){switch(act){case 1: result[0] = temp[1];result[1] = temp[2];result[2] = temp[3];result[3] = temp[0]; break;case 2: result[0] = temp[3];result[3] = temp[2];result[2] = temp[1];result[1] = temp[0]; break;case 3: result[0] = temp[5];result[5] = temp[2];result[2] = temp[4];result[4] = temp[0]; break;case 4: result[0] = temp[4];result[4] = temp[2];result[2] = temp[5];result[5] = temp[0]; break;case 5: result[1] = temp[4];result[4] = temp[3];result[3] = temp[5];result[5] = temp[1]; break;case 6: result[1] = temp[5];result[5] = temp[3];result[3] = temp[4];result[4] = temp[1]; break;default: return;}return;}int main(){int temp[6], result[6], roat[4];int i, j, count, T, act;roat[0] = 1; roat[1] = 5; roat[2] = 3; roat[3] = 6;,&T) != EOF){for(i=0; i<6; ++i) result[i] = temp[i] = i+1;count = 0;for(i=1; i<=T; ++i){scanf(, &act);Traverse(temp, result, act);for(j=0; j<6; ++j) temp[j] = result[j];if(roat[i%4] == result[4]) count++;}printf(, count);}return 0;}

解题报告:

posted on

我要准备好行李启程了,谢谢关心我的家人和朋友,

8631 盒子上的蚂蚁

相关文章:

你感兴趣的文章:

标签云: