50分 蒟蒻能力有限实在改不动了qwq 求大佬帮看一下
查看原帖
50分 蒟蒻能力有限实在改不动了qwq 求大佬帮看一下
545516
Habseligkeit楼主2022/10/12 23:39
#include<bits/stdc++.h>
using namespace std;

int p1 , p2 , p3;
string s;

int main(){
	scanf("%d%d%d" , &p1 , &p2 , &p3);
	cin >> s;
	int l = s.size() , f = p3 == 1 ? 1 : -1;
	for(int i = 0; i < l; i ++){
		char t1 = s[i - 1];
		char t2 = s[i + 1]; 
		if(s[i] != '-' && s[i - 1] != '-' && s[i + 1] != '-'){
			printf("%c" , s[i]);
			continue;
		}
		if(s[i] == '-'){
			if(t1 == s[i] || t2 == s[i] || i == l - 1 || ((t1 >= '0' && t2 <= '9') && 
			  (t2 >='A' && t2 <= 'z')) ||((t1 >= 'A' && t1 <= 'z') && (t2 >= '0' && t2 <='9')))
				continue;
			if(t1 + 1 == t2){
				if(s[i - 2] == '-') printf("%c" , t1);
			}
			if(t1 >= t2){
				printf("%c-%c" , t1 , t2);
				continue;
		    }
		    if(s[i - 2] != '-') printf("%c" , t1);
			for(char j = f == 1 ? t1 + 1: t2 - 1; f == 1 ? (j < t2) : (j > t1); f == 1 ? (j ++) : (j --)){
				char tmp = j;
				if(j >= 'A' && j <= 'Z' && p1 == 1) tmp += 32;
				if(j >= 'a' && j <= 'z' && p1 == 2) tmp -= 32;
				if(p1 == 3) tmp = '*';
				for(int k = 1; k <= p2; k ++) printf("%c" , tmp);
			}
			if(s[i + 2] != '-') printf("%c" , t2);
		}
	}
	return 0; 
}
2022/10/12 23:39
加载中...