求助!!求改正代码
  • 板块学术版
  • 楼主Alan2010
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/9/23 20:47
  • 上次更新2023/10/27 10:14:13
查看原帖
求助!!求改正代码
508562
Alan2010楼主2022/9/23 20:47

题目: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/23 20:47
加载中...