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

📄 030300311[5].cpp

📁 是回文的实验已经通过运行
💻 CPP
字号:
#include <iostream>
#include <fstream>
using namespace std;

class String
{
	public:
		String(char *s="");
		String(const String& s);
		int Length()const;
		String& get(char *a);
		bool test();
	//private:
		char *str;
		int size;
};

String::String(char *s)
{
	size=strlen(s)+1;
	str=new char[size];
//	if(str==0)throw NoMem();
	strcpy(str,s);
}
String::String(const String& s)
{
	size=s.size;
	str=new char[size];
//	if(str==0) throw NoMem()
	strcpy(str,s.str);
}
int String::Length()const
{
	return size-1;
}
String &String::get(char *s)
{
	size=strlen(s)+1;
	str=new char[size];
	strcpy(str,s);
	return *this;
}
bool String::test()
{
	int j=(size-1)/2;
	for(int i=0;i<j;i++)
		if(str[i]!=str[size-i-2])
			return false;							//是回文返回true
	return true;	
}

void main()
{
	int k,n;					//k进制,n次计算
	ifstream in("input.txt");
	if(in.fail())
	{
		cout<<"The input.txt is not exist!\n";
		exit(1);
	}
	ofstream out("output.txt");

	
	char a[10000];
	in>>k>>n;					//输入
	in>>a;
	String input;
	input.get(a);
	input.size=strlen(input.str)+1;

	char digit[]="0123456789ABCDEF";
	int s[10000];
	int x,y;						//本位的两个加数	

	
	int i,j;
	int c=0;						//进位
	int index=0;					//计算次数
	
	if(input.test())
	{
		out<<index<<endl;
		for(i=0;i<input.size-1;i++)
			out<<input.str[i];
		return;
	}
	

	while((index<=n)&&(!input.test()))			//k进制数倒置相加运算
	{	
		for(i=0;i<input.size-1;i++)
		{
			for(j=0;j<16;j++)
			{
				if(digit[j]==input.str[input.size-i-2])
				{
					x=j;
					break;
				}
			}
			for(j=0;j<16;j++)
			{
				if(digit[j]==input.str[i])
				{
					y=j;
					break;
				}
			}
			s[input.size-i-1]=(x+y+c)%k;
			c=(x+y+c)/k;
		}
		s[0]=c;
		if(c!=0)
		{
			for(i=0;i<input.size;i++)
			{
				input.str[i]=digit[s[i]];
			}
			input.size++;
		}
		else for(i=0;i<input.size-1;i++)
			{
				input.str[i]=digit[s[i+1]];
			}
		index++;
		c=0;
	}

	if(input.test())					//输出
	{
		out<<index<<endl;
		for(i=0;i<input.size-1;i++)
			out<<input.str[i];
	}
	else out<<"No solusion!";
}

⌨️ 快捷键说明

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