这个不支持使用itoa吗
查看原帖
这个不支持使用itoa吗
855093
0x00AC3375楼主2023/7/11 22:35

itoa可以直接把10进制的整数转化为其他进制的字符串 再判断一下回文就完了

#include<cstdio> 
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
int base;
//判断回文
bool reverse(char* str)
{
	int len = strlen(str);
	for (int i = 0; i <= len / 2 - 1; i += 1) if (str[i] != str[len - 1 - i]) return 0;
	return 1;
}
//十进制转任意进制
void analysis(long long value)
{
	//其他进制的数值字符串
	char baseValue[40], baseSquare[40];
	//直接用itoa进行进制转化
	itoa(value, baseValue, base);
	itoa(value * value, baseSquare, base);
	int len = strlen(baseSquare);
	//判断出回文就进行输出, 大写转小写
	for (int i = 0; baseValue[i] != 0; i += 1) if (baseValue[i] >= 'a' && baseValue[i] <= 'z') baseValue[i] -= 32;
	for (int i = 0; baseSquare[i] != 0; i += 1) if (baseSquare[i] >= 'a' && baseSquare[i] <= 'z') baseSquare[i] -= 32;
	if (reverse(baseSquare)) cout << baseValue << " " << baseSquare << endl;
	return;
}

int main()
{
	cin >> base;
	for (long long i = 1ll; i <= 300ll; i += 1) analysis(i);
	return 0;
}

这个在本地运行当然是AC了 提交以后结果ce

2023/7/11 22:35
加载中...