1695: 骰子
题目描述
silechen有一颗骰子,他喜欢跟骰子玩游戏,一开始他将骰子平放在地上,然后骰子按照silechen的指令在地上滚动,silechen想将知道骰子每次接触地面的面(也就是骰子的下面)的值加起来是多少(注意,一开始接触地面的值也要算进去)?
输入
第一行是数据组数 1<=T<=10
接下来每组数据
第一行是6个整数,表示骰子的前、后、左、右、上、下的值是多少
第二行1<=n<=100000
第三行是n个整数,表示silenchen每次发出的指令
指令有4种
0:表示骰子向前滚动一次
1:表示骰子向后滚动一次
2:表示骰子向左滚动一次
3:表示骰子向右滚动一次
输出
输出T行,每行一个整数ans,表示每次骰子接触地面的面加起来的值(保证ans在int范围内)
样例输入
1
1 2 3 4 5 6
4
0 1 2 3
样例输出
22
很有意思的一道题目,大概是考验空间想象力的吧,脑子都快想炸了
思路:设置 6 个变量,up, down, left, right, front, behind ,在每一次翻转的时候都将他们重新赋值就行了
#include <stdio.h>
int main(){
int f,b,l,r,u,d,now,sum;
int t,n,v;
scanf( "%d",&t );
while( t-- ){
scanf( "%d%d%d%d%d%d",&f,&b,&l,&r,&u,&d );
scanf( "%d",&n );
sum = now = d;
while( n-- ){
scanf( "%d",&v );
if( v == 0 ){
now = f;
f = u;
u = b;
b = d;
d = now;
} else if( v == 1 ){
now = b;
b = u;
u = f;
f = d;
d = now;
} else if( v == 2 ){
now = l;
l = u;
u = r;
r = d;
d = now;
} else {
now = r;
r = u;
u = l;
l = d;
d = now;
}
sum += now;
}
printf( "%d\n",sum );
}
}
这是一道关于骰子游戏的题目,要求根据骰子的六个面值和一系列指令计算骰子接触地面的面值之和。题目描述中提供了数据组数、骰子面值和指令,解题者通过模拟骰子滚动更新骰子状态,最终得出接触地面的面值总和。样例输入和输出展示了具体操作和结果。
1593

被折叠的 条评论
为什么被折叠?



