知识在等待


私信TA

用户名:zxw389259877

访问量:11671

签 名:

自学编程,望和大佬多多交流

等  级
排  名 640
经  验 3921
参赛次数 0
文章发表 31
年  龄 0
在职情况 学生
学  校 华南理工大学
专  业

  自我简介:

解题思路:

1、创建变量步数step = 0,右读的数字r_N,左读的数字l_N,十进制的右读和左读数字r_Ten,l_Ten

2、循环(判断是否是回文数)

    若不是,则计算出从右读的数字,再将这两个数字转化为10进制数,进行加法计算,再转化成N进制数

    步数+1

3、若是,则判断步数是否小于等于30,再输出相应的文本


注意事项:

1、这里最重要的是最后那个函数的代码

2、十进制和n进制之间的转化都用的是平时手算时候的技巧


参考代码:

主函数代码

#include<stdio.h>

int isreturn(int n);
int ten(int n, int N);
int turn_n(int n, int N);
int right(int n);

int main(int argc, char* argv[])
{
	int step, r_N, l_N, r_Ten, l_Ten, N, sum_Ten;

	step = 0;
	scanf("%d%d", &N, &l_N);

	while (isreturn(l_N) == 0)
	{
		r_N = right(l_N);				//计算出右读的数字
		sum_Ten = 0;

		/*转化为十进制数*/
		r_Ten = ten(r_N, N);
		l_Ten = ten(l_N, N);

		sum_Ten = r_Ten + l_Ten;		//计算十进制下的和
		l_N = turn_n(sum_Ten, N);				//转化为n进制,并赋值给下一个数

		step++;
	}

	/*当是回文数字的时候,输出*/
	if (step <= 30)
	{
		printf("STEP=%d\n", step);
	}
	else
	{
		printf("Impossible\n");
	}
	return 0;
}


判断是否是回文数函数代码

/*判断是否为回文数,是的话返回1,否则返回0*/
int isreturn(int n)
{
	if (n == right(n))
	{
		return 1;
	}
	return 0;
}


n进制转化成十进制,返回十进制数

    例如:9进制的87转化为10进制数

    8*9[1]+7*9[0] = 79(十进制) [x]表示x次方

int ten(int n, int N)
{
	int m = 0, temp, i = 0;

	while (n > 0)
	{
		temp = 1;

		/*得到乘数*/
		for (int j = 0; j < i; j++)
		{
			temp = temp * N;
		}

		m += temp * (n % 10);
		n = n / 10;
		i++;
	}
	return m;
}


十进制转化为N进制,返回n进制数

    n除以N的余数乘以1

    除数再除以N乘以10

    .....

int turn_n(int n, int N)
{
	int m = 0, temp = 1;

	while (n > 0)
	{
		m += temp * (n % N);
		temp *= 10;
		n = n / N;
	}
	return m;
}


计算右读的数字,返回右读的数字

1、将n的每一个数字从个位开始取出来,放到数组中

2、循环

让数组的第一个数乘以10的(i-1)次方

将这个数字加到m中

数组位置++,(i-1)次方数--

3、返回这个右读的数字

int right(int n)
{
	int m = 0, i = 0, temp;
	int num[10] = { 0 };

	/*当n大于0时*/
	while (n > 0)
	{
		num[i] = n % 10;		//个位数给数组
		n = n / 10;
		i++;
	}

	for (int j = 0; i > 0; j++)
	{
		temp = 1;

		/*得到数组对应的乘数*/
		for (int k = 1; k < i; k++)
		{
			temp *= 10;
		}

		m += temp * num[j];
		i--;
	}
	return m;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区