HDU 2816面白い吐き気シミュレーション

1683 ワード

このような気持ち悪い問題を考え出すことができて本当に申し訳ありません!しかもテーマの説明はこんなにおかしい!
パリティははっきり言わない!
#include<iostream>
#include<cstdio>
using namespace std;

char str[1111];
char l1[111];
char l2[111];
int len;

void work()
{
 	 len=strlen(str);
 	 int index[26]={21,22,23,31,32,33,41,42,43,51,52,53,61,62,63,71,72,73,74,81,82,83,91,92,93,94};
 	 for( int i=0;i<26;i++ )
	  	  l1[index[i]]=char(i+'A');
	 char str1[1111];
	 int len1=0;
	 for( int i=0;i<len;i+=2 )
	 {
	  	  int num=0;
	  	  num=(str[i]-'0')*10+str[i+1]-'0';
	  	  str1[len1++]=l1[num];
  	 }
  	 str1[len1]=0;
  	 //printf( "loop1:%s
",str1 ); for( int i=0;i<=len1;i++ ) str[i]=str1[i]; len=len1; char index1[30]={"QWERTYUIOPASDFGHJKLZXCVBNM"}; for( int i=0;i<26;i++ ) l2[index1[i]]='A'+i; for( int i=0;i<len;i++ ) str[i]=l2[str[i]]; //printf( "%s
",str ); char str2[1111]; len1=0; //printf("len:%d
",len); if( len%2==0 ) { for( int i=0;i<len/2;i++ ) { str2[len1++]=str[i]; str2[len1++]=str[i+len/2]; } for( int i=len1-1;i>=0;i-- ) printf( "%c",str2[i] ); printf( "
" ); } else { for( int i=0;i<=len/2;i++ ) { str2[len1++]=str[i]; if( i+len/2+1<len ) str2[len1++]=str[i+len/2+1]; } for( int i=len1-1;i>=0;i-- ) printf( "%c",str2[i] ); printf( "
" ); } } int main() { while( scanf("%s",&str)!=EOF ) { work(); } return 0; }