样例二过不去,悬赏两关(非常完美解决悬赏三关)
查看原帖
样例二过不去,悬赏两关(非常完美解决悬赏三关)
677581
_Glassy_Sky_楼主2023/10/1 22:36

代码可能有点长,请见谅

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//freopen(".in", "r", stdin);
	//freopen(".out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	int p1, p2, p3;
	string s, ans = "";
	cin >> p1 >> p2 >> p3 >> s;
	if(p3 == 1)
	{
		if(p1 == 1)
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(char j = s[i - 1] + 1; j < s[i + 1]; j ++)
							for(int k = 1; k <= p2; k ++)
								ans += j;
				else
					ans += s[i];
		else if(p1 == 2)
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(char j = s[i - 1] + 31; j < s[i + 1] - 32; j ++)
							for(int k = 1; k <= p2; k ++)
								ans += j;
				else
					ans += s[i];
		else
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(int j = s[i - 1] + 1; j < s[i + 1]; j ++)
							for(int k = 1; k <= p2; k ++)
								ans += '*';
				else
					ans += s[i];
	}
	else
	{
		if(p1 == 1)
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(char j = s[i + 1] - 1; j > s[i - 1]; j --)
							for(int k = 1; k <= p2; k ++)
								ans += j;
				else
					ans += s[i];
		else if(p1 == 2)
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(char j = s[i + 1] - 33; j >= s[i - 1] + 32; j --)
							for(int k = 1; k <= p2; k ++)
								ans += j;
				else
					ans += s[i];
		else
			for(int i = 0; i < s.size(); i ++)
				if(s[i] == '-')
					if(((s[i - 1] >= '0' && s[i - 1] <= '9') && (s[i + 1] >= 'a' && s[i + 1] <= 'z')) || ((s[i - 1] >= 'a' && s[i - 1] <= 'z') && (s[i + 1] >= '0' && s[i + 1] <= '9')))
						ans += s[i];
					else if(s[i - 1] >= s[i + 1])
						ans += s[i];
					else
						for(int j = s[i - 1] + 1; j < s[i + 1]; j ++)
							for(int k = 1; k <= p2; k ++)
								ans += '*';
				else
					ans += s[i];
	}
	cout << ans;
	return 0;
}

2023/10/1 22:36
加载中...