不知道为什么80分,希望大佬解释一下
查看原帖
不知道为什么80分,希望大佬解释一下
601009
S1746楼主2025/1/17 22:16

这是80分的代码

#include<bits/stdc++.h>
#define re register int
using namespace std;
int p1,p2,p3;
string a;
vector <char> v;
int main(){
cin>>p1>>p2>>p3>>a;
for(re i=0;i<a.length();i++){
v.push_back(a[i]);
if(a[i]=='-'){
		if(i&&i<a.length()-1&&a[i+1]>a[i-1]&&(a[i-1]>='a'&&a[i-1]<='z'&&a[i+1]<='z'&&a[i+1]>='a')||(a[i-1]<='9'&&a[i-1]>='0'&&a[i+1]>='0'&&a[i+1]<='9')){
			v.pop_back();
			if(p3==1){
				if(p1==3){
					int num=p2*(a[i+1]-a[i-1]-1);
					while(num--)v.push_back('*');
					continue;
				}
				if(a[i-1]<='9'){
					for(char iii=a[i-1]+1;iii<a[i+1];iii++){
						int num=p2;
					//	cout<<iii;
						while(num--)v.push_back(iii);
					}
				}
				else {
				for(char iii=a[i-1]+1;iii<a[i+1];iii++){
					int num=p2;
					char ii='0';
					if(p1==1)ii=iii;
					else ii=iii+'A'-'a';				
					while(num--)v.push_back(ii);
				}	
			}
		}
			else{
				if(p1==3){
					int num=p2*(a[i+1]-a[i-1]-1);
					while(num--)v.push_back('*');
					continue;
				}
				if(a[i-1]<='9'){
					for(char iii=a[i+1]-1;iii>=a[i-1]+1;iii--){
						int num=p2;
						while(num--)v.push_back(iii);
					}
				}
				else {
				for(char iii=a[i+1]-1;iii>=a[i-1]+1;iii--){
					int num=p2;
					char ii;
					if(p1==1)ii=iii;
					else ii=iii-'a'+'A';
					while(num--)v.push_back(ii);
				}	
			}
			}
		}
	}	
}
for(re i=0;i<v.size();i++)cout<<v[i];
  	return 0;
}

这是100分的代码,仅仅在第13行加了一个if语句

#include<bits/stdc++.h>
#define re register int
using namespace std;
int p1,p2,p3;
string a;
vector <char> v;
int main(){
cin>>p1>>p2>>p3>>a;
for(re i=0;i<a.length();i++){
v.push_back(a[i]);
if(a[i]=='-'){
		if(i&&(i<a.length()-1)&&(a[i+1]>a[i-1])&&(a[i-1]>='a'&&a[i-1]<='z'&&a[i+1]<='z'&&a[i+1]>='a')||(a[i-1]<='9'&&a[i-1]>='0'&&a[i+1]>='0'&&a[i+1]<='9')){
			if(a[i+1]>a[i-1])
			v.pop_back();
			if(p3==1){
				if(p1==3){
					int num=p2*(a[i+1]-a[i-1]-1);
					while(num--)v.push_back('*');
					continue;
				}
				if(a[i-1]<='9'){
					for(char iii=a[i-1]+1;iii<a[i+1];iii++){
						int num=p2;
					//	cout<<iii;
						while(num--)v.push_back(iii);
					}
				}
				else {
				for(char iii=a[i-1]+1;iii<a[i+1];iii++){
					int num=p2;
					char ii='0';
					if(p1==1)ii=iii;
					else ii=iii+'A'-'a';				
					while(num--)v.push_back(ii);
				}	
			}
		}
			else{
				if(p1==3){
					int num=p2*(a[i+1]-a[i-1]-1);
					while(num--)v.push_back('*');
					continue;
				}
				if(a[i-1]<='9'){
					for(char iii=a[i+1]-1;iii>=a[i-1]+1;iii--){
						int num=p2;
						while(num--)v.push_back(iii);
					}
				}
				else {
				for(char iii=a[i+1]-1;iii>=a[i-1]+1;iii--){
					int num=p2;
					char ii;
					if(p1==1)ii=iii;
					else ii=iii-'a'+'A';
					while(num--)v.push_back(ii);
				}	
			}
			}
		}
	}	
}
for(re i=0;i<v.size();i++)cout<<v[i];
  	return 0;
}
2025/1/17 22:16
加载中...