30分,求调
  • 板块题目总版
  • 楼主lolali
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/24 12:16
  • 上次更新2023/11/2 18:21:06
查看原帖
30分,求调
874096
lolali楼主2023/9/24 12:16

题目
测试点
代码:

#include <bits/stdc++.h>
//#pragma GCC optimize(2)

using namespace std;

char y[114514],j[114514],my[30],p[114514],py[114514];//y原串 j加密串 my x对应y p加密情报  py解密情报 

int main()
{
	/*ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);*/
    
    cin>>y>>j;
    memset(my,'0',sizeof(my));//秘钥初始化 
    int n=strlen(y);
    for (int i=0;i<n;i++)
    {
    	if (my[y[i]-64]==j[i]) continue;
    	if (my[y[i]-64]=='0') my[int(y[i])-64]=j[i];
    	else //出现一个字母对应两个密钥的情况 
    	{
    		cout<<"Failed";
    		return 0;
		}
	}
	for (int i=0;i<n-1;i++)
    {
    	for (int j=i+1;j<n;j++)
    	{
    		if (my[i]==my[j]) //不同的字母秘钥相同 
			{
				cout<<"Failed";
				return 0;
			}
		}
	}
	
	cin>>p;
	n=strlen(p);
	for (int i=0;i<n;i++)
    {
    	if (my[p[i]-64]=='0')//无秘钥 
    	{
    		cout<<"Failed";
    		return 0;
		}
		py[i]=my[p[i]-64];
	}
	for (int i=0;i<n;i++)
    {
    	cout<<py[i];
	}

	return 0;
}
2023/9/24 12:16
加载中...