##求助#
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("sum=%d %d\n",sum,len-1-i);
}
else
{sum=sum+(x[i]-'0')*(int)(pow(xx,len-1-i)+0.5);
// printf("sum=%d %d\n",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("traverse=%d\n",m);
printf("xxx=%d\n",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("%d",&n);
scanf("%s",yy);
y=jinzhi(yy,n);
printf("y=%d\n",y);
if(leijia(y))
printf("STEP=%d\n",step);
else
printf("impossible\n");
return 0;
}
输入:2
10011
输出:y=19
traverse=91
xxx=110
traverse=11
xxx=121
STEP=2
我感觉我的流程没有问题啊,为什么step输出是4啊?
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("sum=%d %d\n",sum,len-1-i);
}
else
{sum=sum+(x[i]-'0')*(int)(pow(xx,len-1-i)+0.5);
// printf("sum=%d %d\n",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("traverse=%d\n",m);
printf("xxx=%d\n",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("%d",&n);
scanf("%s",yy);
y=jinzhi(yy,n);
printf("y=%d\n",y);
if(leijia(y))
printf("STEP=%d\n",step);
else
printf("impossible\n");
return 0;
}
输入:2
10011
输出:y=19
traverse=91
xxx=110
traverse=11
xxx=121
STEP=2
我感觉我的流程没有问题啊,为什么step输出是4啊?
全部评论
这题要用原有进制判断,神经。。。懒得改了,就这样吧
相关推荐
查看1道真题和解析 点赞 评论 收藏
分享
05-22 09:19
兰州工业学院 Web前端
牛客52338264...:我也专升本 别写专科了 只写本科 有问再说 没问都不要提专科经历, 然后赶紧去学一个项目,把这个项目包装成实习经验 再学一个项目当做项目经验 点赞 评论 收藏
分享
联想内推码:啥title?美团title?
点赞 评论 收藏
分享
