//<<<<<<<<<<<<<—往下输入/插入题目---->>>>>>>>>>>>>>>>>>:/* 记得加 /
/ 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数,例如32123就是一个回文数。
但事实上,
17在某种意义上也是一个回文数,因为它的二进制(10001)是一个回文数。
在2~10进制下,确认一些十进制数是不是回文数。//十进制的数码足够使用.考虑写一个基数在10之内的n进制转换器(从10十进制到n进制(n<10))
输入(当然可以考虑判断是否回文的角度和可以采取的标准多样的)
输入有多组,直到EOF为止。
每组数据 包含 一个 十进制整数n(1<n<50000)。
输出
Yes或者No,每个测试输出占一行。
样例输入
17
19
样例输出
Yes
No
// // 拷贝到平台的时候把my_fuction_lib.h注释掉.
//#include "my_fuction_lib.h"
//在此下方插入自定义函数对的声明:
void number_system_converter(int num,int n_sys,char *buf_return);
void reverse_string(char * str);
//主函数main
int main()
{
//复制模版式删除这个或者再下面一个
int n;
while( scanf("%d",&n) != EOF)
{
int flag = 0;
for(int i = 2 ;i <= 10;i++)
{
char buf_return[100];
char buf_reverse[100];
number_system_converter(n,i,buf_return);
int len = strlen(buf_return);
int len_last = len - 1;
for(int i = 0;i < len;i++)
{
buf_reverse[i] = buf_return[len_last - i];
}
buf_reverse[len] = 0;//截断,使之成为字符串.
if(strcmp(buf_reverse,buf_return) == 0)
{
flag++;
// printf("Yes");
break;
}
// else
// {
// //printf("No");
// }
}
if(flag == 0)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
return 0;
}
//主函数结束.
//在下方编写自定义函数:
// void reverse_string(char * str)
// {
// int len = strlen(str);
// for(int i = 0;i<len/2;i++)/* 画个图,算出len的值,标上两端及中间的关于(len的表达式),将会一目了然 */
// {
// char temp;
// temp = str[len-1 - i] ;
// str[len-1 - i] = str[i];
// str[i] = temp;
// }
// }
void number_system_converter(int num,int n_sys,char *buf_return)
{
int quotient;/* 商(除法所得的结果)商数/'kwo??nt/;份额;返回商的整数部分 */
int remainder;/* 余数 */
quotient = num / n_sys;
int i = 0;
for(; quotient > 0;i++)//这里的i在上头初始化过了
{
quotient = num / n_sys;
remainder = num % n_sys;
/* 逆序填充 */
buf_return[i] = remainder+48;//从数字转换为字符
num = quotient;/* num得到了迭代,则其他含有num的表达式也将得到迭代. */
}
buf_return[i] = '\0';//截断该字符串for的i++已将位置下移
}