1 条题解

  • 1
    @ 2024-2-29 17:06:05

    把字符串转换成整数数组,然后按照题意模拟即可。数组v用来存放对应关系,v[x]=y表示原文x对应密文y,其中x和y是整数。在模拟过程中,如果发现对应关系冲突,或者遗漏,说明计算失败,输出Failed。否则根据v数组计算出新的密文即可。

    核心代码
    
    memset(v, -1, sizeof(v));
    bool ok = true;
    for (int i = 0, sz = a.size(); i < sz; i++) {
    	int cur = a[i] - 'A';
    	int tar = b[i] - 'A';
    	if (v[cur] == -1) {
    		v[cur] = tar;
    	} else if (v[cur] != tar) {
    		ok = false;
    		break;
    	}
    }
    for (int i = 0; i < 26; i++) {
    	if (v[i] == -1) {
    		ok = false;
    		break;
    	}
    	for (int j = 0; j < i; j++) {
    		if (v[i] == v[j]) {
    			ok = false;
    		}
    	}
    }
    if (!ok) {
    	cout << "Failed" << endl;
    } else {
    	for (int i = 0, sz = c.size(); i < sz; i++) {
    		cout << char('A' + v[c[i] - 'A']);
    	}
    	cout << endl;
    }
    
    • 1

    信息

    ID
    679
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    83
    已通过
    29
    上传者