小明正在研究趣味数学。如果一个正整数,它的二进制形式是个回文数,小明就会将它称为“精妙数”。如33,二进制形式为10001,则33是一个精妙数。
现在小明找到了T个数字,他想让你判断这些数是不是精妙数。是精妙数回答“Yes”,否则回答“No”。
输入格式
第一行输入一个数T,表示数字个数; 之后T行,每行输入一个数,表示每个数字。
输出格式
输出T行,每行一个字符串"Yes"或者"No",以空格隔开。
输入样例
3
44
33
22
输出样例
No
Yes
No
数据范围
对于100%的数据,1≤T≤100000,0≤每个数字≤10^9;
以下是我错误的代码(不造哪错了):
#include<iostream>
#pragma GCC optimize(2)
using namespace std;
inline int f(int a)
{
long long num=0,m=a,n[101],i=1;
while(m)
{
n[i]=m%2;
m/=2;
i++;
}
for(int j=i-1;j>=1;j--)
num=num*10+n[j];
return num;
}
inline int r(int n)
{
int t=n,num=0;
while(t)
{
num=num*10+t%10;
t/=10;
}
return num;
}
int main()
{
int t,n;
cin>>t;
int a[t+1];
for(int i=1;i<=t;i++)
cin>>a[i];
for(int i=1;i<=t;i++)
{
n=f(a[i]);
if(r(n)==n)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}