神奇6位数

题目描述

有一个6位的正整数,它有个很神奇的性质:

分别用2 3 4 5 6去乘它,得到的仍然是6位数,并且乘积中所包含的
数字与这个6位数完全一样!只不过是它们的顺序重新排列了而已。

请计算出这个6位数。

这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字)

//100 000-166 667
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
bool judge(int x[10],int y[10])//判断两个数组中元素是否相等 
{
	for(int i=0;i<10;i++)
	{
		if(x[i]!=y[i])
			return false;
	}
	return true;
}
void fun(int n,int a[10])//记录整数n都由那些数字构成 
{
	int t=n;
	while(t!=0)
	{
		int m=t%10;
		a[m]++;
		t=t/10;
	}
}
int main ()
{
	for(int n=100000;n<166667;n++)//因为所求整数的六倍也是个六位数,所以最大是166667 
	{
		int t=n;
		int a[10],a2[10],a3[10],a4[10],a5[10],a6[10]; 
		int t2=n*2;
		int t3=n*3;
		int t4=n*4;
		int t5=n*5;
		int t6=n*6;
		memset(a,0,sizeof(a));//置零 
		memset(a2,0,sizeof(a2));
		memset(a3,0,sizeof(a3));
		memset(a4,0,sizeof(a4));
		memset(a5,0,sizeof(a5));
		memset(a6,0,sizeof(a6));
		fun(t,a);//找到每个数 构成它的数字个数,存到数组中 
		fun(t2,a2);
		fun(t3,a3);
		fun(t4,a4);
		fun(t5,a5);
		fun(t6,a6);
		/*for(int i=0;i<=9;i++)
			cout<<a[i]<<" ";
		cout<<endl;*/
		if(judge(a,a2) && judge(a,a3) && judge(a,a4) && judge(a,a5) && judge(a,a6))//如果六个数组完全相同,说明构成他们的数字和出现次数都相同 
			cout<<n<<endl;
	}
	return 0;
}

14年的蓝桥国赛题,主要还是暴力

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值