⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 palsqure.cpp

📁 找出1——300以内的数和它的平方都是对称的数字。 例如:2 4 3 9 11 121
💻 CPP
字号:
/*
ID: day_bea3
PROG: palsquare
LANG: C++
*/#include <fstream>
#include <iostream>

#include <assert.h>
using namespace std;

const int MAXLEN = 17;

int translate(const int base, const int source, char rel[])
{
	int i = 0;
	int src =source;
	while (src > 0)
	{
		rel[i] = src % base + 48;
		if (rel[i] > '9')
		{
			rel[i] += 7;

		}
		src /= base;
		i++;
	}
	int j = 0;
	char temp = '\0';
	for (; j < i / 2; j++)
	{
		temp = rel[j];
		rel[j] = rel[i - j - 1];
		rel[i - j - 1] = temp;

	}
	return i;
}

bool IsPalindromic(char rel[], int len)
{
	int i = 0;
	for (; i < len/2; i++)
	{
		if (rel[i] != rel[len - i -1])
		{
			return false;
		}
	}
	return true;
}



bool GotIt(int base)
{
	char num[MAXLEN] = {0};
	char numsqure[MAXLEN] = {0};

	ofstream fout("palsquare.out");
	assert(fout);

	int len = 0;
	int i = 0;
	for (i = 1; i <= 300; i++)
	{
		len = translate(base, i * i, numsqure);
		if (IsPalindromic(numsqure, len))
		{
			translate(base, i, num);
			fout<<num<<" "<<numsqure<<"\n";
		}

	}
	fout.close();
	return false;
}


int main()
{
	ifstream fin("palsquare.in");
	assert(fin);

	
	int base = 0;

	fin>>base;
	assert(base >= 2 && base <= 20);

	GotIt(base);

	fin.close();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -