二进制回文数

小L比较喜欢研究奇妙的数字,有一天他发现了一类特殊的数,他将这些数命名为“小L数”。 
“小L数”的定义:数字的二进制是一个回文数。
比如:
1    (1)2
3    (11) 2
5    (101)2
现在给出一个数字N,请判断他是不是小L数。 

 

输入

输入为多组数据
输入的数字N<=1023 

输出

对于每一个N,若N是小L数,则输出"Yes",否则输出"No"。 

样例输入 1 2 3

样例输出

yes
no
yes
#include <stdio.h>
#include <math.h>
int main()
{
    int b,i,j,c,m;
    double sum;
    int a[20];
    while(scanf("%d",&b)!=EOF)
    {
        m=b;
        c=0;
        sum=0;
        while(b!=0)//算出转化成二进制的数
        {
            i=b%2;
            a[c]=i;
            c++;
            b=b/2;
        }
        c--;
        for(j=0;j<=c;j++)//二进制本就是倒着输出的,在这里可以直接进行回文数判断
        {
            sum=sum+a[j]*pow(2,c-j);
        }
        if(sum-m==0)//判断回文数转换成十进制以后和原数比较
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}


 

### 回答1: 不一定是回文数。一个二进制数在转换为十进制数后,可能会变成一个不同的数字,因此它不一定是回文数。例如,二进制数 "101" 转换为十进制数是 5,而 5 在十进制中不是回文数。另一方面,二进制数 "111" 转换为十进制数仍是 7,而 7 在十进制中是回文数。因此,一个二进制数是否为回文数,需要先将其转换为十进制数,然后再判断是否为回文数。 ### 回答2: 二进制回文数的,不一定在十进制中也是回文数回文数是指正读和反读结果相同的数字。在二进制中,如果一个数字的二进制表示正着读和倒着读都相同,那么它就是一个二进制回文数。 例如,十进制数11在二进制中表示为1011,它满足二进制回文数的条件。但是,在十进制中,11并不是一个回文数,因为它从左到右读和从右到左读的结果不同。 因此,虽然二进制回文数的数字可以是十进制中的回文数,但不一定如此。十进制中的回文数可能不是二进制中的回文数,因为数字的二进制表示与十进制表示不同。 ### 回答3: 答案是:不一定。 二进制是指由0和1组成的基数为2的数制。回文数是指从左到右或从右到左读数完全相同的数。 我们首先来看一个例子:二进制数101是回文数,但是转换成十进制数是5,不是回文数。 现在我们来分析一下。如果一个二进制数是回文数,那么它从左到右读数和从右到左读数应该是相同的。转换成十进制数时,我们需要根据权重进行计算。例如,对于二进制数101,转换成十进制数时,我们计算(1 * 2^2) + (0 * 2^1) + (1 * 2^0) = 5。从这个例子中我们可以看出,二进制数是回文数,转换成十进制后不一定是回文数。 因此,二进制回文数的在十进制中并不一定是回文数。虽然有一些二进制回文数在十进制数中也是回文数,但是这并不是绝对的规律。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值