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

📄 1_1.cpp

📁 算法设计
💻 CPP
字号:
/*题目:
求这样的两位数据:五位数=2*四位数,9个数字各不相同。
*/

#include<iostream>
using namespace std;
const int NINE=9;
int sj[NINE];//全局的,记录这九个不同的数字
void deal_mn(int a,int b)
{
	int i,j,e,h;
	for(i=0;i<4;i++)//将n值存入前数组前4位
	{
		e=10;
		h=1;
		for(j=1;j<i+1;j++)
		{
			e*=10;
			h*=10;
		}			
		sj[i]=(b%e)/h;
	}
	for(i=4;i<NINE;i++)//将m值存入前数组后5位
	{
		e=10;
		h=1;
		for(j=1;j<i-3;j++)
		{
			e*=10;
			h*=10;
		}
		sj[i]=(a%e)/h;
	}
}
bool deal_sj()
{
	int i,j;
	for(i=0;i<NINE;i++)
		for(j=i+1;j<NINE;j++)
		{
			if(sj[i]==sj[j])//前面的数据和其后面的每一个数据都比较判断
				return false;
		}
	return true;
}
void main()
{
	int m,n;//m表示五位数,n表示四位数;且m,n为所求
	int k=0;//计数器

	/*现在需要确定m,n的取值范围:
	10234<m<19752,5117<n<9876(根据题意得到的);
	为什么要将m,n的范围确定下来?
	是为了减少循环次数。
	*/
	for(n=5120;n<9876;n++)
	{
		m=2*n;//满足两倍关系处理m,n
		
		/*现在需要将m,n所组成的9个数放进数组sj[9]中,
		可以用一个函数来处理*/
		deal_mn(m,n);//数组中放入了9个数字

		/*现在判断9个数字是否各不相同,
		可以用一个bool函数处理*/
		if(deal_sj())
		{
			cout<<"这两个数据分别为:"<<m<<"和"<<n<<endl;
			k++;
		}
	}
	if(k==0)
		cout<<"不存在这样的两个数据!\n";
}

⌨️ 快捷键说明

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