首页 > 编程语言 >小猴编程周赛C++ | 密码锁

小猴编程周赛C++ | 密码锁

时间:2024-05-26 12:31:59浏览次数:32  
标签:周赛 密码锁 数字 int 移动 轮子 小猴

学习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

相关文章

  • “现代汽车中国前瞻软件赛杯” 牛客周赛 Round 43 D、E
     那时候吃了饭后,剩下25分钟,我就把A-D都过了一遍,E不够时间。 D对于x~y这个长度为k的序列:对于1~k每个数,它出现的数目。从x~y,到x+1~y:如果一个数出现的数目从0->1,出现元素数目+1;如果一个数出现的数目从1->0,出现元素数目-1。记录所有出现元素数目=k的序列。太多人对了。......
  • “现代汽车中国前瞻软件赛杯” 牛客周赛 Round 43
    A小红平分糖果Code:#include<bits/stdc++.h>usingnamespacestd;#definedebug(x)cerr<<#x<<":"<<x<<'\n';intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);intn;ci......
  • 力扣第130场双周赛
    判断矩阵是否满足条件给定二维矩阵,判断所有格子是否满足如下条件:如果它下面的格子存在,那么它需要等于它下面的格子如果它右边的格子存在,那么它需要不等于它右边的格子遍历二维矩阵,简单模拟即可。classSolution{public:boolsatisfiesConditions(vector<vector<in......
  • 牛客周赛-41
    B.红的排列构造#include<bits/stdc++.h>usingnamespacestd;intn,k;intmain(){cin>>n>>k;vector<int>a(n,0);for(inti=0;i<n;i++)cin>>a[i];if(k>n||k<2)cout<<"-1\n"......
  • 牛客周赛 Round 40
    A-小红进地下城a=input()b=input()ifa==b:print("Yes")else:print("No")B-小红打怪#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,m;cin>>n>>m;vector<string>s(n);......
  • 力扣周赛394之别样DP + 别样Dijkstra
    别样DP题目链接https://leetcode.cn/problems/minimum-number-of-operations-to-satisfy-conditions/description/题目大意题目思路需要考虑m列每一列填什么的情况,因为最终每一列都是一样的考虑暴力,每一列都可以变成0-9有\(10^m\)次种情况,这必然是不可行的我们从前往......
  • [leetcode 周赛] 100276. 最短路径中的边
    solution使用dijkstra算法求出顶点0到每个顶点的最小距离dp[i]然后再从n-1开始遍历,如果dp[to]+w==dp[from],这条边符合条件importjava.util.*;classSolution{publicstaticvoidmain(String[]args){Solutionsolution=newSolution();......
  • 牛客周赛 Round 40
    A小红进地下城点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ strings,t; cin>>s; cin>>t; if(s==t) { cout<<"Yes"<<endl; } else { cout<<"No"<<endl; } return0;}B小......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......