社区讨论

小小小模拟求调

灌水区参与者 2已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m2iwjfp0
此快照首次捕获于
2024/10/21 18:57
去年
此快照最后确认于
2024/10/21 20:14
去年
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
bool pd(char a){
	if(a>='0'&&a<='9')return 1;
	return 0;
}
int n,d;
string a,A,B,C,in,out;
int main(){
	getline(cin,a);
	if(a.size()==1&&a[0]=='1'){
		n=1;
	}else{
		//d为'.'的位置 
		for(int i=0;i<a.size();i++){
			if(a[i]=='.'){
				d=i;break;
			}
		}
		if(pd(a[d-1])){//编号在主名后(A数.B  C)
			for(int i=0;;i++){
				if(pd(a[i]))break;
				A+=a[i];
			}
			for(int i=0;i<a.size();i++){
				if(pd(a[i]))n=n*10,n+=a[i]-'0';
			}
			for(int i=d+1;;i++){
				if(a[i]==' ')break;
				B+=a[i];
			}
		}else{//编号在拓展名后(A.B数  C)
			for(int i=0;i<d;i++){
				A+=a[i];
			}
			for(int i=d+1;i<a.size();i++){
				if(pd(a[i]))break;
				B+=a[i];
			}
			for(int i=0;i<a.size();i++){
				if(a[i]==' ')break;
				if(pd(a[i]))n=n*10,n+=a[i]-'0';
			}
		}
		for(int i=a.size()-1;;i--)if(a[i]==' ')break;else C+=a[i];
		for(int i=0;i<C.size()/2;i++)swap(C[i],C[C.size()-i-1]);
	}
	while(cin>>in>>out){
		if(a[0]=='0'||a[0]=='1'){
			for(int i=0;i<in.size();i++){
				if(pd(in[i])&&!pd(in[i-1])){
					cout<<n;
				}else if(!pd(in[i])){
					cout<<in[i];
				}
			}
			cout<<" ";
			for(int i=0;i<out.size();i++){
				if(pd(out[i])&&!pd(out[i-1])){
					cout<<n;
				}else if(!pd(out[i])){
					cout<<out[i];
				}
			}
			cout<<endl;n++;
		}else{
			if(pd(a[d-1])){//编号在主名后(A数.B  C)
				cout<<A<<n<<"."<<B<<" "<<A<<n<<"."<<C<<endl;n++;
			}else{//编号在拓展名后(A.B数  C)
				cout<<A<<"."<<B<<n<<" "<<A<<"."<<C<<n<<endl;n++;
			}
		}
	}
	return 0;
}

回复

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

正在加载回复...