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]!='';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]!='';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("
");
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jie-dcai/p/3975952.html