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

📄 chuangxin.cpp

📁 这个是个C++的课程设计
💻 CPP
字号:
/*
2.	把满足条件进行扩展,例如求一个5位的16进制数,
它的平方是个10位的16进制数,恰好包括0x1到0xF这
15个数字。此问题的一般性描述为:对于一个3N+1进
制数来说,有一个N位的3N+1进制数和它的平方(一个
2N位的3N+1进制数),由1到3N组成。
*/

  
#include <iostream.h>
#include <math.h>



bool isHaveSame(int num,int JinZhi)
{
	int *aa=new int[(JinZhi-1)/3];
	int i=0,j;
	while(num)
	{
		aa[i++]=num%JinZhi;
		num/=JinZhi;
	}
	for(i=0;i<(JinZhi-1)/3;i++)
	{
		for(j=i+1;j<(JinZhi-1)/3;j++)
		{
			if(!aa[i]||aa[i]==aa[j])
			{
				return true;
			}
		}
	}
	return false;
}


bool isWei(int num,int JinZhi)
{
	if(num>pow(JinZhi,2*(JinZhi-1)/3-1) && num<pow(JinZhi,2*(JinZhi-1)/3))
	{
		return true;
	}
	return false;
}


bool isHaveSame(int num1,int num2,int JinZhi)
{
	int *aa=new int[JinZhi];
	int x,i=0;
	x=num1;
	while(x)//将num1从低位到高位依次存到aa[]数组中
	{
		aa[i++]=x%JinZhi;
		x/=JinZhi;
	}
	x=num2;
	while(x)//将num2从低位到高位依次存到aa[]数组中
	{
		aa[i++]=x%JinZhi;
		x/=JinZhi;
	}
	for(i=0;i<JinZhi;i++)
	{
		for(int j=i+1;j<JinZhi;j++)
		{
			if(!aa[i]||aa[i]==aa[j])
			{
				return true;
			}
		}
	}
	return false;
}
void Show(int num1,int num2,int JinZhi)
{
	int *aa=new int[JinZhi];
	int x,iCount=0,i;
	x=num1;
	while(x)//将num1从低位到高位依次存到aa[]数组中
	{
		aa[iCount++]=x%JinZhi;
		x/=JinZhi;
	}
	char ch;
	for(i=iCount-1;i>=0;i--)
	{
		if(aa[i]<=9)
		{
			cout<<aa[i];
		}
		else
		{
			ch=aa[i]-10+'A';
			cout<<ch;
		}
	}
	cout<<"\'s square is ";
	iCount=0;
	x=num2;
	while(x)//将num2从低位到高位依次存到aa[]数组中
	{
		aa[iCount++]=x%JinZhi;
		x/=JinZhi;
	}
	for(i=iCount-1;i>=0;i--)

	{
		if(aa[i]<=9)
		{
			cout<<aa[i];
		}
		else
		{
			ch=aa[i]-10+'A';
			cout<<ch;
		}
	}
	cout<<endl;

}

void main()
{
	bool isHaveSame(int,int);
	bool isHaveSame(int,int,int);
	bool isWei(int ,int );
	void Show(int,int,int);

	int JinZhi=10;
	cout<<"输入进制数"<<endl;
	cin>>JinZhi;
	int square=0;

	for(int i=pow(JinZhi,(JinZhi-1)/3-1);i<pow(JinZhi,(JinZhi-1)/3);i++)
	{
		if(isHaveSame(i,JinZhi))
		{
			i++;
			continue;
		}
		square=i*i;
		if(!isWei(square,JinZhi))
		{
			i++;
			continue;
		}
		if(!isHaveSame(i,square,JinZhi))
		{
			Show(i,square,JinZhi);
		}
	}
}

⌨️ 快捷键说明

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