社区讨论

未知RE+TLE+AC,铅条,必关

P1098[NOIP 2007 提高组] 字符串的展开参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjh7dyo
此快照首次捕获于
2025/11/04 02:31
4 个月前
此快照最后确认于
2025/11/04 02:31
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int p1,p2,p3,i,j,l1,cnt,le,k,p;
char l,r;
string a,b; 
int main(){
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	cin>>p1>>p2>>p3>>a;
	l1=a.size();
	b[0]=a[0];
	for(i=1;i<l1;i++){
		if(a[i]=='-') continue;
		if(a[i-1]=='-'&&i>=2&&a[i]>a[i-2]){
			string c;
			le=-1;
			k=a[i]-a[i-2]-1;
			if(p1==3){
				for(j=1;j<=p2*k;j++){
					b[++cnt]='*';
				}
			}
			else{
				if(a[i]>='0'&&a[i]<='9'){
					for(j=(a[i-2]+1);j<a[i];j++){
						for(p=1;p<=p2;p++){
							c[++le]=j;
						}
					}
				}
				else{
					if(p1==1){
						if(a[i-2]>='A'&&a[i-2]<='Z'){
							l=a[i-2]-'A'+'a'+1;
							r=a[i]-'A'+'a'-1;
						}
						else{
							l=a[i-2]+1;
							r=a[i]-1;
						}
						for(j=l;j<=r;j++){
							for(p=1;p<=p2;p++){
								c[++le]=j;
							}
						}
					}
					
					else if(p1==2){
						if(a[i-2]>='a'&&a[i-2]<='z'){
							l=a[i-2]-'a'+'A'+1;
							r=a[i]-'a'+'A'-1;
						}
						else{
							l=a[i-2]+1;
							r=a[i]-1;
						}
						for(j=l;j<=r;j++){
							for(p=1;p<=p2;p++){
								c[++le]=j;
							}
						}
					}
				}

				if(le>=0){
					if(p3==1){
						for(j=0;j<=le;j++){
							b[++cnt]=c[j];
						}
					}
					else if(p3==2){
						for(j=le;j>=0;j--){
							b[++cnt]=c[j];
						}
					}	
				}
			}
			b[++cnt]=a[i];
		} 
		else if(a[i-1]=='-'&&(i<=2||a[i]<=a[i-2])){
			b[++cnt]='-';
			b[++cnt]=a[i];
		}
		else{
			b[++cnt]=a[i];
		}
	}
	for(i=0;i<=cnt;i++){
		cout<<b[i];
	}
	return 0;
}


回复

0 条回复,欢迎继续交流。

正在加载回复...