POJ 1107
水题一道,注意取模时不能为0
#include <iostream> #include <algorithm> #include <cstring> #include <string.h> #include <cstdio> using namespace std; char s[150]; char ans1[150],ans2[150],ans3[150]; int mark[150]; int p1,p2,p3; int main(){ int k1,k2,k3; while(scanf("%d%d%d",&k1,&k2,&k3),k1||k2||k3){ int b1,b2,b3; b1=b2=b3=0; p1=p2=p3=0; scanf("%s",s); for(int i=0;s[i]!='\0';i++){ if(s[i]>='a'&&s[i]<='i'){ mark[i]=1; ans1[p1++]=s[i]; } else if(s[i]>='j'&&s[i]<='r'){ mark[i]=2; ans2[p2++]=s[i]; } else{ mark[i]=3; ans3[p3++]=s[i]; } } if(p1!=0) b1=((0-k1)%p1+p1)%p1; if(p2!=0) b2=((0-k2)%p2+p2)%p2; if(p3!=0) b3=((0-k3)%p3+p3)%p3; for(int i=0;s[i]!='\0';i++){ if(mark[i]==1){ printf("%c",ans1[b1]); b1=(b1+1); if(p1!=0) b1%=p1; } else if(mark[i]==2){ printf("%c",ans2[b2]); b2=(b2+1); if(p2!=0) b2%=p2; } else{ printf("%c",ans3[b3]); b3=(b3+1); if(p3!=0) b3%=p3; } } printf("\n"); } return 0; }