1 条题解

  • 0
    @ 2024-12-24 10:06:16

    C :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,t,k;
    	char m[1005],c[105];
    	while(scanf("%s%s",c,m)==2)
    	{
    		t=strlen(c);
    		for(i=0;i<t;i++)
    			if(c[i]<='Z')c[i]-='A';else c[i]-='a';
    		for(i=0,j=0;i<strlen(m);i++)
    		{
    			k=m[i]-c[j++];
    			if(m[i]>='a')if(k>='a')printf("%c",k);else printf("%c",k+26);
    			else if(k>='A')printf("%c",k);else printf("%c",k+26);
    			if(j==t)j=0;
    		}
    		printf("\n");
    	}
    	return 0;
    }
    

    C++ :

    #include<iostream>
    #include<string.h>
    using namespace std;
    int main()
    {
    	char k[100]={0},c[1000]={0},m[1000]={0};
    	while(cin>>k>>c)
    	{
    		for(int i=0,j=0;i<strlen(c);i++,j++)
    		{
    			if(c[i]<='z'&&c[i]>='a'&&k[j]<='z'&&k[j]>='a')
    			{
    				m[i]=c[i]-(k[j]-97);
    				if(m[i]>122) m[i]=m[i]-26;
    				if(m[i]<97) m[i]=m[i]+26;
    			}
    			if(c[i]<='Z'&&c[i]>='A'&&k[j]<='Z'&&k[j]>='A')
    			{
    				m[i]=c[i]-(k[j]-65);
    				if(m[i]>90) m[i]=m[i]-26;
    				if(m[i]<65) m[i]=m[i]+26;
    			}
    			if(c[i]<='Z'&&c[i]>='A'&&k[j]<='z'&&k[j]>='a')
    			{
    				m[i]=(c[i]+32)-(k[j]-97)-32;
    				if(m[i]>90) m[i]=m[i]-26;
    				if(m[i]<65) m[i]=m[i]+26;
    			}
    			if(c[i]<='z'&&c[i]>='a'&&k[j]<='Z'&&k[j]>='A')
    			{
    				m[i]=c[i]+-(k[j]-97+32);
    				if(m[i]>122) m[i]=m[i]-26;
    				if(m[i]<97) m[i]=m[i]+26;
    			}
    			if(j==strlen(k)-1) j=-1;
    		}
    		cout<<m<<endl;
    	}
    }
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		while (scanner.hasNextLine()) {
    			String key = scanner.nextLine(), encoded = scanner.nextLine();
    			System.out.println(decode(encoded, key));
    		}
    	}
    
    	public static String decode(String encoded, String key) {
    		key = key.toLowerCase();
    		String decoded = "";
    		for (int i = 0; i < encoded.length(); i++) {
    			char c = encoded.charAt(i);
    			int shift = key.charAt(i % key.length()) - 'a';
    			if (c >= 'A' && c <= 'Z') {
    				int offset = c - 'A';
    				c = (char)('A' + (offset + 26 - shift) % 26);
    			} else if (c >= 'a' && c <= 'z') {
    				int offset = c - 'a';
    				c = (char)('a' + (offset + 26 - shift) % 26);
    			}
    			decoded += c;
    		}
    		return decoded;
    	}
    }
    
    • 1

    信息

    ID
    2552
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者