求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制

2022-05-28  本文已影响0人  蓝色忧郁8533

原始题目:求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值

可以将题目拆分为三个子函数:是二进制回文、是八进制回文、是十进制回文
判断是几进制回文的方式相同,只是里面的参数不同,所以题目可以拆分成如下三个子题目

子题目:已知一个十进制数字,判断这个数字是否是十进制回文数字

int JudgeCircle(int t)
{
 int m = 0, n = 0, q = 0;
 m = t;
 while (m != 0)
 {
  q = m % 10;
  n = n * 10 + q;
  m = m / 10;
 }
 return n == t ? 1 : 0;
}

子题目:已知一个十进制数字,判断这个数字是否是二进制回文数字

int BinaryCircle(int t)
{
  int m = 0, n = 0, q = 0;
  m = t;
  while (m != 0)
  {
   q = m % 2;
   n = n * 2 + q;
   m = m / 2;
  }
  return n == t ? 1 : 0;
}

子题目:已知一个十进制数字,判断这个数字是否是八进制回文数字

int OctalCircle(int t)
{
  int m = 0, n = 0, q = 0;
  m = t;
  while (m != 0)
  {
   q = m % 8;
   n = n * 8 + q;
   m = m / 8;
  }
  return n == t ? 1 : 0;
}

另:求一个十进制数字有多少位

int CountBit(int t)
{
  int n = 0;
  while (t != 0)
  {
   n++;
   t = t / 10;
  }
  return n;
}

子题目:将一个十进制字符串转换为二进制字符串、八进制字符串

函数优化,可以编写成下面的形式,一个函数同时计算是否能是十、八、二进制的回文数

int Func(int n,int t)
{
    int a = 0;
    int b = n;
    int c = 0;
    while (b != 0)
    {
        a = b % t;
        c = c * t + a;
        b = b / t;
    }

    if (n == c)
        return 1;
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读