HDU The Hardest Problem Ever

来源:互联网 发布:vscode 撤销快捷键 编辑:程序博客网 时间:2024/06/06 09:05

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1048
本题实际上是一个字符数组的映射问题,因为是将A-Z整体往右边移动了5位,e.x. A对应F,因此我们输入的串整体上-5得到原串,但是mod操作不便于操作负数,因此我采取的策略就是使用一个倒序的字母数组将-5转换为+5操作。

#include<stdio.h>#include<string.h>//#define LOCALchar alpha[26];using namespace std;int findi(char a){        for(int i=0;i<26;i++)            if(a==alpha[i])            return i;    }int main(){    for(int i=0;i<26;i++){        alpha[i]='Z'-i;    }    #ifdef LOCAL    freopen("input.txt","r",stdin);    #endif // LOCAL    char buffer[1000];    while(gets(buffer)!=NULL){        if(strcmp(buffer,"ENDOFINPUT")==0)           break;        else if(strcmp(buffer,"START")==0)            continue;        else if(strcmp(buffer,"END")==0)            continue;        else{            int i=0;            while(buffer[i]!='\0'){                if(buffer[i]>='A' &&buffer[i]<='Z')                    printf("%c",alpha[(findi(buffer[i])+5)%26]);                else                    printf("%c",buffer[i]);                i++;            }            printf("\n");        }    }    return 0;}
0 0