求助站外题
  • 板块学术版
  • 楼主Alan2010
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/24 19:20
  • 上次更新2023/10/27 10:06:35
查看原帖
求助站外题
508562
Alan2010楼主2022/9/24 19:20

题目:NHOI2010第二题 乐乐的数字

题目描述:

乐乐最近喜欢研究回文数,假设一个数从左到右读跟从右到左读的结果是一样的,那么我们说这个数是一个回文数。 如果一个数在十进制下是回文的,我们说这个数是一重回文数,如果一个数在十进制和二进制下是回文的,我们说这个数是二重回文数,如果一个数在三种进制下是回文的,我们说这个数是三重回文数……。现在我们用数字0..9,字母‘A’..‘Z’分别代表数字10..35(即10用A表示,11用B表示……,35用Z表示),任意给出一个10进制数,乐乐想知道它在2至36进制里是多少重的回文数。

输入 输入文件只有一个10进制的整数n(2<=n<=2000000000)

输出 第一行为一个整数m,表示n在2至36进制里有m种是回文的;

接下来是m行,从小到大输出n在哪些进制下是回文的。

样例输入

50

样例输出

3

7

9

24

提示 50对应的7进制数为101,9进制数为55,24进制数为22。

#include <bits/stdc++.h>
using namespace std;
int a;
char num[100];
int i;

int main() {
    cin >> a;
    for (int j = 2; j <= 36; j++) {

        _itoa(a, num, j);  //c++中一般用_itoa,用itoa也行,

        int len = strlen(num);
        for (i = 0; i < len / 2; i++) { //第一位和最后一位比较,依次递增,递减比较
            if (num[i] != num[len - 1 - i])
                break;
        }
        if (i < len / 2)
            cout << j << endl;

    }
    return 0;
}

然而我的输出:

2 3 4 5 6 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 哪里错了???

2022/9/24 19:20
加载中...