小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;
}