为什么这会错
查看原帖
为什么这会错
1164775
Jadonyzx楼主2025/7/18 21:15

50pts:

#include<bits/stdc++.h>
#define maxn 10000010
using namespace std;
int n;
char a[maxn*2];
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;++i)cin>>a[i];
	for(int i=n+1;i<=n*2;++i)a[i]=a[i-n];
	int i=1,j=2;int k=0;
	while(i<=n&&j<=n){
		for(k=0;i+k<=n&&j+k<=n&&a[i+k]==a[j+k];)++k;
		if(a[i+k]>a[j+k])i=i+k+1;
		else j=j+k+1;
		if(i==j)i++;
	}
	int ans=min(i,j);
	for(int i=0;i<n;++i)cout<<a[i+ans];
	return 0;
}

100pts:

#include<bits/stdc++.h>
#define maxn 10000010
using namespace std;
int n;char a[maxn*2];
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;++i)cin>>a[i];
	for(int i=n+1;i<=n+n;++i)a[i]=a[i-n];
	int i=1,j=2,k=0;
	while(i<=n&&j<=n){
		for(k=0;k<n&&a[i+k]==a[j+k];)++k;
		if(a[i+k]>a[j+k])i=i+k+1;
		else j=j+k+1;
		if(i==j)i++;
	}
	int ans=min(i,j);
	for(int i=0;i<n;++i)cout<<a[i+ans];
	return 0;
}
2025/7/18 21:15
加载中...