就测试点4过不了
查看原帖
就测试点4过不了
528612
Entity_303_楼主2022/2/23 16:53
#include <bits/stdc++.h>
using namespace std;
char str[110];
int num[110];
int i,j,n,flag;
void add()
{
	num[0]+=1;
	for(i=0;i<n;i++)
	{
		if(num[i]>=10)
		{
			num[i+1]++;
			num[i]-=10;
		}
	}
	if(num[n]>0)
	{
		n++;
	}
}
void mirror(int t)
{
	while(t<=n-1)
	{
		num[n-t-1]=num[t];
		t++;
	}
}
int comp(int t)
{
	while(num[t]==num[n-t-1])//1234321
		t++;
	if(t>=n)
	{
		return 0;
	}	
	else if(num[t]>num[n-t-1])
	{
		return 1;
	}
	else
	{
		return -1;
	}
}
void output()
{
	for(i=n-1;i>=0;i--)
	{
		cout<<num[i];
	}	
}
int main()
{
	cin>>str;
	n=strlen(str);
	for(i=0;i<n;i++)
	{
		num[n-i-1]=str[i]-48;
	}
	add();
	if(n%2==1)
	{
		flag=comp(n/2+1);
		if(flag>0)
		{
			mirror(n/2+1);
			output();
		}
		else if(flag<0) 
		{
			mirror(n/2+1);
			num[n/2]++;
			output();	
		}
		else if(flag==0)
		{
			num[0]--;
			output();
		}
	}
	else
	{
		flag=comp(n/2);
		if(num[n/2]<num[n/2-1])
		{
			num[n/2]++;
		}
		mirror(n/2);
		output();
	}	
	return 0;
}

PS:测了好多数据都对,就是测试点4不行

2022/2/23 16:53
加载中...