CF1703C Cypher 题解

题意:模拟一个 \(n\) 位密码锁。

做法:直接模拟,注意往后推,即若为 \(U\) 变为 \(D\),若为 \(D\) 变为 \(U\)。注意 \(0\)\(9\) 进行操作时的特判。

#include<cstdio>
#include<iostream>
using namespace std;
int s[105];
int t,n;
char a;
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%d",&s[i]);
		}
		int m;
		for(int i=1;i<=n;i++){
			scanf("%d",&m);
			for(int j=1;j<=m;j++){
				scanf(" %c",&a);
				if(a=='D'){
					s[i]++;
					if(s[i]==10) s[i]=0;
				}
				else if(a=='U'){
					s[i]--;
					if(s[i]==-1) s[i]=9;
				}
			}
		}
		for(int i=1;i<=n;i++){
			printf("%d ",s[i]);
		}
		printf("\n");
	}
	return 0;
}

posted @ 2022-07-15 09:01  Scorilon  阅读(44)  评论(0)    收藏  举报