#4 TLE怎么修改
查看原帖
#4 TLE怎么修改
396635
Danmoits楼主2021/1/21 21:27

本蒟蒻这题改别的bug就花了三四个小时,不知道#4为什么TLE了...求dalao提示一下修改建议

#include <stdio.h>
#include <string.h>
int arr[1000001]={0},revarr[1000001]={0};
char str[1000001]={0};

int GJAdd(int arr[],int revarr[],int *plen,int n){
//高精加
	int i=0;
	for(i=0;i<=*plen;i++){
		arr[i]+=revarr[i];
		arr[i+1]+=arr[i]/n;
		arr[i]%=n;
	}
	if(arr[*plen+1]>0) (*plen)++;
	return 0;		
}

int Rev(int arr[],int revarr[],int len){
//逆序
	int i=0,j=0;
	for(i=len;i>0;i--)
		revarr[++j]=arr[i];	
	return 0;
}

int Judge(int arr[],int len){
//判断回文
	int ln=len,i=1,j=len;
	while(ln/2){
		ln--;
		if(arr[i++]!=arr[j--])
			return 0;
	}
	return 1;
}

int Init(num){
//初始化
	int j=0,i=0;
	for(i=strlen(str)-1;i>=0;i--){
		if(str[i]>='0'&&str[i]<='9')
			arr[++j]=str[i]-'0';
		else
			arr[++j]=str[i]-'A'+10;
	}
	return 0;
}
int main(){
	int ans=0,n=0,num=0,i=0;
	scanf("%d\n",&n);
	scanf("%s",str);
   //把数存入str数组
	int len=strlen(str);
	int *plen=&len;
	Init(num);
	while(!Judge(arr,len)){
		ans++;
		Rev(arr,revarr,len);
		GJAdd(arr,revarr,plen,n);		
	}
	printf("STEP=%d",ans);
	return 0;
}
2021/1/21 21:27
加载中...