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;
}

浙公网安备 33010602011771号