XTU程设 1425 Dice I

news/2024/9/25 23:23:50/

题目描述

一颗骰子放在桌面上,1点在顶面,6点在底面,5点在正面,2点在背面,3点在左面,4点在右面。 我们分别使用”UDLRXY”分别表示按左手螺旋法则,沿x,y,z轴顺时钟和逆时钟转动90度。 比如在初始状态下,各指令执行后各面的点数如表所示。

指令顶面底面正面背面左面右边
U526134
D251634
L435216
R345261
X164352
Y163425

现在给你一个指令序列,请问从初始状态开始执行完这个指令序列后顶面的点数是多少?

输入

存在不超过1000条指令序列,每行一条指令序列,为一个只包含”UDLRXY”的字符串,长度不超过200。

输出

每行输出一个样例的结果。

样例输入

UDLRXY
LUUDD
UULDD

样例输出

1
4
3

解题思路 

模拟,很多人第一反应是声明一个数组记录六个面的状态,但通过一番观察不难发现,题目中的骰子相对的两个面数字之和为7。有了这种特殊的规律,只需记录顶面、正面和左面三个面的数字就能描述所有面的状态。 

例如,当指令为'U'时,要把骰子向上旋转,顶面数字将变为原来的正面数字,正面的数字将变成原来的底面的数字(即7减去顶面数字),左面的数字不变。则可以表示为

if(instruct[i]=='U'){temp=7-pose[0];pose[0]=pose[1];pose[1]=temp;
}

完整代码如下

#include <stdio.h>
int main()
{char instruct[205];int i,temp;int pose[3];while(scanf("%s",instruct)!=EOF){pose[0]=1;pose[1]=5;pose[2]=3;for(i=0;instruct[i];++i){if(instruct[i]=='U'){temp=7-pose[0];pose[0]=pose[1];pose[1]=temp;}else if(instruct[i]=='D'){temp=7-pose[1];pose[1]=pose[0];pose[0]=temp;}else if(instruct[i]=='L'){temp=7-pose[2];pose[2]=pose[0];pose[0]=temp;}else if(instruct[i]=='R'){temp=7-pose[0];pose[0]=pose[2];pose[2]=temp;}else if(instruct[i]=='X'){temp=7-pose[2];pose[2]=pose[1];pose[1]=temp;}else if(instruct[i]=='Y'){temp=7-pose[1];pose[1]=pose[2];pose[2]=temp;}}printf("%d\n",pose[0]);}return 0;
}


http://www.ppmy.cn/news/234454.html

相关文章

P1425 小鱼的游泳时间

P1425 小鱼的游泳时间 提交431.24k 通过215.36k 时间限制1.00s 内存限制125.00MB 提交答案加入题单 复制题目 题目提供者yeszy 难度入门 历史分数100 提交记录 查看题解 标签 查看算法标签 进入讨论版 相关讨论 查看讨论 推荐题目 查看推荐 洛谷推荐关闭 展开 题目…

2022-2028全球抗氧剂1425行业调研及趋势分析报告

据恒州诚思调研统计&#xff0c;2021年全球抗氧剂1425市场规模约 亿元&#xff0c;2017-2021年年复合增长率CAGR约为%&#xff0c;预计未来将持续保持平稳增长的态势&#xff0c;到2028年市场规模将接近 亿元&#xff0c;未来六年CAGR为 %。 本文调研和分析全球抗氧剂1425发展现…

hd1425

sort Time Limit : 6000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Problem Description 给你n个整数&#xff0c;请按从大到小的顺序输出其中前m大的数。 Input 每组测试数据有两行&#xff0c;第一行有两个数n,m(0<n,m<1000000)&#xff0c;…

HDU 1425 sort

1.本题为多组输入&#xff0c;虽然题目没说 2.百万的数组定义成全局变量 3.用scanf 、printf 代替cin、cout 4.注意最终结果的输出格式 #include<bits/stdc.h> using namespace std; int num[1000005]; bool cmp(int a,int b) {return a>b; } int main() {int n,m…

HDU-1425 排序

WFU寒假训练<十二> sort Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 81178 Accepted Submission(s): 21044 Problem Description 给你n个整数&#xff0c;请按从大到小的顺序输出其中前m大的数。 Inp…

51nod 减减数1425

题意&#xff1a; 1425 减减数 1.0 秒 131,072.0 KB 80 分 5级题 初始给定一个整数n。每次可以对其做一个操作&#xff0c;这个操作是将n减去他其中的某一位。得到新的一个数字n’,然后继续操作&#xff0c;直到他变成0为止。 比如24这个例子&#xff0c;24 → 20 → 18 → 1…

1425:质数和

1425:质数和 描述 有一个ab位的正整数&#xff0c;前a位是质数&#xff0c;后b位也是质数&#xff0c;求所有符合条件的数字和。 注意&#xff1a;前a位的质数不可以0开头&#xff0c;否则拼出的数字不是ab位。后b位的质数可以是0开头。例如当a1&#xff0c;b2时&#xff0c;2…

P1425 小鱼的游泳时间 题解

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…