##求助#
https://www.nowcoder.com/share/jump/1408176281734265684977
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int ishui(int x) 
{
    int Arr[100];
    int i = 0;

    while (x != 0) 
    {
        Arr[i] = x % 10;
        x = x / 10;
        i++;
    }

    int len = i;
    for (int j = 0; j < len / 2; j++) 
    {
        if (Arr[j] != Arr[len - j - 1]) 
        {
            return 0;
        }
    }
    return 1;
}
int cnt=0;
int jinzhi(char x[],int xx)
{
   int i,len=strlen(x);
   int sum=0;
   for(i=len-1;i>=0;i--)
   {
        if(x[i]=='A'||x[i]=='B'||x[i]=='C'||x[i]=='D'||x[i]=='E'||x[i]=='F')
        {sum=sum+(x[i]-'A'+10)*(int)(pow(xx,len-1-i)+0.5);
        // printf(&quot;sum=%d   %d\n&quot;,sum,len-1-i);
        }
        else
        {sum=sum+(x[i]-'0')*(int)(pow(xx,len-1-i)+0.5);
        // printf(&quot;sum=%d   %d\n&quot;,sum,len-1-i);
        }
   }
   return sum;

}
int step=1;
int leijia(int x)
{
    int xxx;
    int n=x,m=0;
    while(n!=0)
    {
        m=n%10+10*m;
        n=n/10;
    }
    xxx=x+m;
    printf(&quot;traverse=%d\n&quot;,m);
    printf(&quot;xxx=%d\n&quot;,xxx);
    if(step>30)
    return 0;
    if(ishui(xxx))
    {
        return 1;
    }
    else
    {
        step++;
        return leijia(xxx);
    }  
}
int main()
{
 int n,y;
 char yy[20];
 scanf(&quot;%d&quot;,&amp;n);
 scanf(&quot;%s&quot;,yy);
 y=jinzhi(yy,n);
 printf(&quot;y=%d\n&quot;,y);
 if(leijia(y))
 printf(&quot;STEP=%d\n&quot;,step);
 else
 printf(&quot;impossible\n&quot;);
 return 0;
}
输入:2
10011
输出:y=19
traverse=91
xxx=110
traverse=11
xxx=121
STEP=2
我感觉我的流程没有问题啊,为什么step输出是4啊?
全部评论
这题要用原有进制判断,神经。。。懒得改了,就这样吧
点赞 回复 分享
发布于 2024-12-15 20:43 河北

相关推荐

牛客52338264...:我也专升本 别写专科了 只写本科 有问再说 没问都不要提专科经历, 然后赶紧去学一个项目,把这个项目包装成实习经验 再学一个项目当做项目经验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务