本蒟蒻这题改别的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;
}