学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
小猴有一个密码锁,密码锁是由 n 个轮子组成,每个轮子上都写着数字
a
i
a_i
ai。在第 i 轮子上,他可以拨动轮子移动。每次移动有两种类型:
① 向上移动(用字符U表示):表示将第 i 个数字向上移动 1 步,数字 9 向上移动之后会回到数字 0;
② 向下移动(用字符D表示):表示将第 i 个数字向下移动 1 步,数字 0 向下移动之后会回到数字 9。
[图片]
如上图所示,n=4时,密码锁显示的数字序列是 0,0,0,0。
小猴把正确密码打乱之后忘记了开锁密码,但是小猴记得密码锁从左到右的每个轮子上显示的数字和打乱密码的时候每个轮子的移动方式。请你帮助小猴找到他的正确
【输入】
第一行一个整数 t,表示有 t 组测试数据;
每组测试数据:
第一行,一个整数 n,表示密码锁有 n 个轮子;
第二行,n 个整数
a
1
,
a
2
,
…
,
a
n
a_1,a_2,\dots,a_n
a1,a2,…,an,表示每个轮子显示的数字;
接下 n 行,每行一个只包含字符 U 和 D 的字符串 s,依次表示从左到右的每个轮子的移动方式。
【输出】
每组数据输出一行,n 个整数,表示正确密码。
【输入样例】
2
2
2 8
DDDDDDD
DDU
3
6 8 2
DDDU
UUD
U
【输出样例】
9 9
8 7 1
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int t, n, a[105];
int main()
{
cin >> t;
while (t--) {
cin >> n;
for (int i=1; i<=n; i++) { // 输入密码锁当前数字
cin >> a[i];
}
for (int i=1; i<=n; i++) {
string s;
cin >> s; // 读入每个轮子的移动方式
for (int j=0; j<s.size(); j++) {
if(s[j]=='D') { // 对于'D'需要加1
a[i]++;
if (a[i]==10) a[i] = 0;
} else { // 对于'U'需要减1
a[i]--;
if (a[i]==-1) a[i] = 9;
}
}
}
for (int i=1; i<=n; i++) { // 输出原来的密码数字
cout << a[i] << " ";
}
cout << endl;
}
return 0;
}
【运行结果】
2
2
2 8
DDDDDDD
DDU
9 9
3
6 8 2
DDDU
UUD
U
8 7 1
标签:周赛,密码锁,数字,int,移动,轮子,小猴
From: https://blog.csdn.net/guolianggsta/article/details/137992799