请问第三个过不了是为什么

#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 100000
long long int str_int(char s[], int n)
{
int i, strl;
long long int result = 0;
strl = strlen(s);
for (i = 0; i < strl; i++)
{
if(s[i]<'A')
result += (s[i]-'0')*(double )pow((double)n,(double)(strl-i-1));
else
result += (s[i] - 'A'+10)*(double)pow((double)n, (double)(strl-i-1));
}
return result;
}
void int_str(char s[],long long int source, int n)
{
int i=MAX-1,j;
while(source>0)
{
if (source%n < 10)
s[i] = '0' + source%n;
else
s[i] = 'A' + source%n - 10;
i--;
source = source / n;
}
i++;
for (j = 0; i < MAX; i++, j++)
{
s[j] = s[i];
}
s[j] = '\0';
}
int judge(char s[])
{
int strl,i;
strl = strlen(s);
for (i = 0; i < strl / 2; i++)
{
if (s[i] != s[strl - 1 - i])
return 0;
}
return 1;
}
void add(char s[],int n)
{
int i, strl,result;
char s1[MAX];
strl = strlen(s);
for (i = 0; i < strl; i++)
{
s1[i] = s[strl - 1 - i];
}
s1[i] = '\0';
result = str_int(s, n) + str_int(s1, n);
int_str(s, result, n);
}
int main()
{
int n;
char s[MAX];
int i;
scanf("%d", &n);
scanf("%s", s);
for (i = 0; i <= 30; i++)
{
if (judge(s))
{
printf("STEP=%d", i);
break;
}
add(s, n);
}
if (i > 30)
printf("Impossible!");
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1304
难度
5
分类
模拟 点击显示
标签
递交数
8066
已通过
2523
通过率
31%
被复制
28
上传者