NJU 1010 Air

时间:2022-10-24 10:58:31

思路:把那张图打表(吐血...),然后就按照规则输出就行。

AC代码

#include <cstdio>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <cstring>
#include <utility>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define eps 1e-10
#define inf 0x3f3f3f3f
#define PI pair<int, int>
typedef long long LL;
const int maxn = 50 + 5;
string a[maxn];

void init() {
	for(int i = 0; i <= 35; ++i) {
		if(i == 0) a[i] = ".-";
		else if(i == 1) a[i] = "-...";
		else if(i == 2) a[i] = "-.-.";
		else if(i == 3) a[i] = "-..";
		else if(i == 4) a[i] = ".";
		else if(i == 5) a[i] = "..-.";
		else if(i == 6) a[i] = "--.";
		else if(i == 7) a[i] = "....";
		else if(i == 8) a[i] = "..";
		else if(i == 9) a[i] = ".---";
		else if(i == 10) a[i] = "-.-";
		else if(i == 11) a[i] = ".-..";
		else if(i == 12) a[i] = "--";
		else if(i == 13) a[i] = "-.";
		else if(i == 14) a[i] = "---";
		else if(i == 15) a[i] = ".--.";
		else if(i == 16) a[i] = "--.-";
		else if(i == 17) a[i] = ".-.";
		else if(i == 18) a[i] = "...";
		else if(i == 19) a[i] = "-";
		else if(i == 20) a[i] = "..-";
		else if(i == 21) a[i] = "...-";
		else if(i == 22) a[i] = ".--";
		else if(i == 23) a[i] = "-..-";
		else if(i == 24) a[i] = "-.--";
		else if(i == 25) a[i] = "--..";
		else if(i == 26) a[i] = "-----";
		else if(i == 27) a[i] = ".----";
		else if(i == 28) a[i] = "..---";
		else if(i == 29) a[i] = "...--";
		else if(i == 30) a[i] = "....-";
		else if(i == 31) a[i] = ".....";
		else if(i == 32) a[i] = "-....";
		else if(i == 33) a[i] = "--...";
		else if(i == 34) a[i] = "---..";
		else if(i == 35) a[i] = "----.";
	}
	for(int i = 0; i <= 35; ++i) {
		string s = a[i];
		a[i].clear();
		for(int j = 0; j < s.size(); ++j) {
			if(s[j] == '.') a[i].push_back('=');
			else for(int k = 0; k < 3; ++k) a[i].push_back('=');
			if(j < s.size()-1) a[i].push_back('.');
		}
	}
}

int main() {
	init();
	int T, n, kase = 1;
	char s[25];
	scanf("%d", &T);
	while(T--) {
		printf("Case #%d: ", kase++);
		scanf("%d", &n);
		for(int i = 0; i < n; ++i) {
			scanf("%s", s);
			for(int j = 0; j < strlen(s); ++j) {
				s[j] = toupper(s[j]);
				if(s[j] >= 'A' && s[j] <= 'Z') {
					cout << a[s[j]-'A'];
				}
				else cout << a[s[j]-'0'+26];
				if(j != strlen(s)-1) printf("...");
			}
			if(i != n-1) printf(".......");
		}
		printf("\n");
	}
	return 0;
}

如有不当之处欢迎指出!