题目描述
小L比较喜欢研究奇妙的数字,有一天他发现了一类特殊的数,他将这些数命名为“小L数”。
“小L数”的定义:数字的二进制是一个回文数。
比如:
1 (1)2
3 (11) 2
5 (101)2
现在给出一个数字N,请判断他是不是小L数。
输入
第一行为一个正整数T,代表测试数据的数量(1<=T<=106)。
接下来T行,每行为一个十进制数N(1<=N<=230)。
输出
对于每一个N,若N是小L数,则输出yes,否则输出no。
样例输入3
1
2
3
样例输出yes
no
yes
#include<stdio.h>
int main(){
int t,n,x,flag=0,i=0;
int a[33];
scanf("%d",&t);
while(t--){
x=0; flag=0;
scanf("%d",&n);
while(n!=0){
a[x++]=n%2;
n/=2;
}
for(i=0;i<x;i++)
if(a[i]!=a[x-1-i]) //判断是否为回文数
{
flag=1;
break;
}
if(flag==0)
printf("yes\n");
else printf("no\n");
}
return 0;
}