POJw密码

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

//对于每个元素,找它在结果数组中应该在的位置,然后把它放进去 
int main(){
	char str[1000];
	int k1,k2,k3;

	while(scanf("%d %d %d",&k1,&k2,&k3),k1&&k2&&k3){
		scanf("%s",str);
		int l=strlen(str);
		char s[1000]; 
		s[l]='\0';
		for(int i=0;i<l;i++){//还原第i个元素
			if('a'<=str[i] && str[i]<='i'){//第一组的 
				int j=(i+1)%l,t=0,p;//从下一个元素开始,找k1个同一组的元素 
				while(t<k1) {
					if('a'<=str[j] && str[j]<='i') t++;
					if(t==k1) p=j;
					j=(j+1)%l;
				}
				s[p]=str[i];
			}
			else if('j'<=str[i] && str[i]<='r'){//第二组的 
				int j=(i+1)%l,t=0,p;
				while(t<k2) {
					if('j'<=str[j] && str[j]<='r') t++;
					if(t==k2) p=j;
					j=(j+1)%l;
				}
				s[p]=str[i];
			}
			else if(('s'<=str[i] && str[i]<='z')||str[i]=='_'){//第三组的 
				int j=(i+1)%l,t=0,p;
				while(t<k3) {
					if(('s'<=str[j] && str[j]<='z')||str[j]=='_') t++;
					if(t==k3) p=j;
					j=(j+1)%l;
				}
				s[p]=str[i];
			}
		}
	
		printf("%s\n",s);
	}
	return 0;
}
发布了50 篇原创文章 · 获赞 0 · 访问量 530
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览