Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
大概讲讲你得思路啊,怕是大多数人都没有耐心去看那么长得程序 :)In Reply To:我实在找不出错了,哪位大大有时间帮我看看,Sample Input可以得到正确的答案 Posted by:windbells at 2004-08-07 23:28:35 > 是不是命令后的空格也要输出 > 所以"RESULT:"后至少有2个空格 > > > #include<stdio.h> > #include<string.h> > int main() > { > char commad[100],arry[10005],pre,tmp,clj[26]; > int i,size,brry[26],key,flag; > for(i=0;i<26;i++) > { > clj[i]=i+'A';//值对应的字母 > brry[i]=i;//字母对应的值 > } > while(scanf("%s",commad)!=EOF) > { > gets(arry); > size=strlen(arry);pre='A'; > if(strcmp(commad,"ENCRYPT")==0) > { > for(i=0;i<size;i++) > { > if(arry[i]>='a'&&arry[i]<='z') > { > tmp=arry[i]; > arry[i]=clj[(brry[arry[i]-'a']-brry[pre-'A']+26)%26]; > pre=tmp-32; > if(arry[i]>='A'&&arry[i]<='Z') > arry[i]+=32; > } > else if(arry[i]>='A'&&arry[i]<='Z') > { > > tmp=arry[i]; > arry[i]=clj[(brry[arry[i]-'A']-brry[pre-'A']+26)%26]; > pre=tmp; > if(arry[i]>='a'&&arry[i]<='z') > arry[i]-=32; > } > else pre='A'; > } > printf("RESULT: %s\n",arry); > } > else if(strcmp(commad,"DECRYPT")==0) > { > for(i=0;i<size;i++) > { > if(arry[i]>='a'&&arry[i]<='z') > { > arry[i]=clj[(brry[pre-'A']+brry[arry[i]-'a'])%26]; > pre=arry[i]; > if(arry[i]>='A'&&arry[i]<='Z') > arry[i]+=32; > } > else if(arry[i]>='A'&&arry[i]<='Z') > { > > arry[i]=clj[(brry[pre-'A']+brry[arry[i]-'A'])%26]; > pre=arry[i]; > if(arry[i]>='a'&&arry[i]<='z') > arry[i]-=32; > } > else pre='A'; > } > printf("RESULT: %s\n",arry); > } > else if(strcmp(commad,"CIPHER")==0) > { > for(i=0;i<26;i++) > brry[i]=26; > key=0;flag=1; > for(i=0;i<size;i++) > { > if(arry[i]>='a'&&arry[i]<='z') > { > clj[key++]=arry[i]-32; > if(brry[arry[i]-'a']!=26) > { > flag=0; > break; > } > else brry[arry[i]-'a']=key-1; > } > else if(arry[i]>='A'&&arry[i]<='Z') > { > clj[key++]=arry[i]; > if(brry[arry[i]-'A']!=26) > { > flag=0; > break; > } > else brry[arry[i]-'A']=key-1; > } > if(flag==0) > break; > } > if(key!=26) > flag=0; > if(flag==0) > { > for(i=0;i<26;i++) > { > clj[i]=i+'A'; > brry[i]=i; > } > printf("Bad cipher. Using default.\n"); > } > else > { > printf("Good cipher. Using "); > for(i=0;i<26;i++) > printf("%c",clj[i]); > printf(".\n"); > } > } > else printf("Command not understood.\n"); > } > return 0; > } > > Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator