string 在 CF 的灵异事件
  • 板块灌水区
  • 楼主Shunpower
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/27 14:07
  • 上次更新2023/11/3 23:28:38
查看原帖
string 在 CF 的灵异事件
399150
Shunpower楼主2021/11/27 14:07

这是一份使用了 string 的代码。

string s;
void solve(){
	long long nump,nums;
	nump=nums=0;
	cin>>x>>s;
	nums=s.length();
	for(int i=0;i<x;i++){
		nump=(nums-(i+1)+Mod)%Mod;
		int f=s[i]-'1';
		if(s.length()<x){
			string p=s.substr(i+1,nump);
			for(int j=1;j<=f;j++){
				if(s.length()+nump>x){
					s+=p.substr(0,x-s.length());
					break;
				}
				else{
					s+=p;	
				}
			}
		}
		nums+=1ll*nump*f%Mod;
		nums%=Mod;
	}
	cout<<nums<<endl;
}

这是另一份使用了 string 的代码。

string s,p;
void solve(){
	long long nump,nums;
	nump=nums=0;
	cin>>x>>s;
	nums=s.length();
	for(int i=0;i<x;i++){
		nump=(nums-(i+1)+Mod)%Mod;
		int f=s[i]-'1';
		if(s.length()<x){
			p=s.substr(i+1,nump);
			for(int j=1;j<=f;j++){
				if(s.length()+nump>x){
					s+=p.substr(0,x-s.length());
					break;
				}
				else{
					s+=p;	
				}
			}
		}
		nums+=1ll*nump*f%Mod;
		nums%=Mod;
	}
	cout<<nums<<endl;
}

然而,第一份代码交到 CF 的结果是AC,第二份代码交到 CF 的结果是TLE。而差别仅仅是string p的位置。

这是为什么?

2021/11/27 14:07
加载中...