【ZZULIOJ】1106: 回文数(函数专题)

ZZULIOJ题解

1106: 回文数(函数专题)

题目描述
一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m

输入
输入两个正整数m和n,输入保证m

输出
按从小到大的顺序,输出m到n之间的回文数,每个数后面有一个空格。

样例输入

100 200

样例输出

101 111 121 131 141 151 161 171 181 191 

先用函数处理出回文数的计算方法,然后进行判断是否满足回文数条件进行输出

代码

#include
#include
int inverse(int n) 
{ 
	int w,j,i,x=1,sum=0;//逆序数字计数和sum,循环变量i,j,以及n的位数w 
 	w=log10(n)+1;//计算n的位数w 
 	for(j=1;j<w;j++)	x*=10;//循环计算最高位对应的位数 
	for(i=1;i<=w;i++){//循环实现逆序数字 
	sum+=n%10*x;//每次取最低位的数字做新数字的最高位 
	x/=10;//把新的位数降低一位,做下一个高位数字 
	n/=10;//把数字向前取一位,抛弃最低位数字 
	}
	return sum;//计算并返回n的逆序数字 
} 
int main()
{
	int w,n,m,x;//定义数字范围m和n,以及循环变量x 
	scanf("%d %d",&m,&n); //键盘输入范围m和n 
	for(x=m;x<=n;x++)
	{
	if(x==inverse(x))	//如果逆序数字和本体相等 
	printf("%d ",x);//输出该数字 
	}
	return 0; //结束正常程序 
}

你可能感兴趣的:(ZZULIOJ,算法,c++,开发语言)