一个有趣的二进制回文数问题C++/C

题目描述

如果一个十进制数转换为二进制后是回文的,则这个数称为二进制回文数。飞飞对二进制回文数十分感兴趣,他想请你帮他判断一个数字是否是二进制回文数。

输入
第一行输入一个整数T表示样例个数,第二行输入是十进制数字n,表示需要判断的数字。

输出
如果n是二进制回文数,则输出一行“Yes”,否则输出一行“No”。

样例输入
2
1
2

样例输出
Yes
No

提示

1<=T<=10000
1<=n<=10000


int main()
{

   int T, n, t, i, len, a[16];
   scanf("%d", &T);
   while (T--)
   {
      len = 0;
      scanf("%d", &n);
      while (n)
      {
         t = n % 2;
         a[len++] = t;
         n /= 2;
      }
      len--;
      for (i = 0; i <= len / 2; i++)
      {
         if (a[i] != a[len - i])
            break;
      }

      if (i > len / 2)
         printf("Yes\n");
      else
         printf("No\n");
   }

   return 0;
}