1317.txt

来自「北大ACM题目例程 详细的解答过程 程序实现 算法分析」· 文本 代码 · 共 46 行

TXT
46
字号


#include <stdio.h>
#include <string.h>

inline int convert(char c)
{
	if( c == '_' ) return 0;
	if( c == '.' ) return 27;
	return c-'a'+1;
}

inline char convert(int s)
{
	if( s == 0 ) return '_';
	if( s == 27) return '.';
	return 'a'+s-1;
}

int main()
{
	int i, k, n;
	char ciphertext[100],plaintext[100];
	int  ciphercode[100],plaincode[100];

	while(1)
	{
		scanf("%d",&k);
		if( k == 0 ) break;
		scanf("%s",ciphertext);		
		n = strlen( ciphertext );
		for( i=0; i<n; i++ )
		ciphercode[i] =	convert( ciphertext[i] );		
		for( i=0; i<n; i++ )
		plaincode[(k*i)%n] = ( ciphercode[i]+i ) % 28;		
		for( i=0; i<n; i++ )
		plaintext[i] = convert( plaincode[i] );		
		plaintext[i] = '\0';
		printf("%s\n",plaintext);
	}
	
	return 0;
}	


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?