平方结果数字互不相同且九位

博客探讨了如何找到所有满足条件的九位数x,其平方结果中每个数字都是唯一的。通过分析数字范围,减少了遍历的复杂性,最终列举出了满足条件的平方结果。

问题:

.求所有的满足等式x*x的结果,平方结果内的数字互不相同,且遍历数字1-9;

分析:

1、正常遍历所有互不相同9位是不可行的,需要九层循环。遍历所有九位循环次数也很大。
2、最大数字互不相同的九位是987654321,它开方数小于31427;
最小数字互不相同的九位是123456789,它开方数大于11110;

代码:

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	int a[10];
	long long  square;
	for(int i=11110;i<=31427;i++)
	{
		memset(a,0,sizeof(a));
		square= (long long)i*i; //两个int数字相乘还是int型。
		while(square){
			int temp=square%10;
			if(a[temp] || temp==0) break;
			a[temp]++;
			square/=10;
		}
		if (!square) cout<<i<<"*"<<i<<"="<<(long long)i*i<<endl;
	}	
	return 0;	
}

结果:

11826 * 11826 = 139854276
12363 * 12363 = 152843769
12543 * 12543 = 157326849
14676 * 14676 = 215384976
15681 * 15681 = 245893761
15963 * 15963 = 254817369
18072 * 18072 = 326597184
19023 * 19023 = 361874529
19377 * 19377 = 375468129
19569 * 19569 = 382945761
19629 * 19629 = 385297641
20316 * 20316 = 412739856
22887 * 22887 = 523814769
23019 * 23019 = 529874361
23178 * 23178 = 537219684
23439 * 23439 = 549386721
24237 * 24237 = 587432169
24276 * 24276 = 589324176
24441 * 24441 = 597362481
24807 * 24807 = 615387249
25059 * 25059 = 627953481
25572 * 25572 = 653927184
25941 * 25941 = 672935481
26409 * 26409 = 697435281
26733 * 26733 = 714653289
27129 * 27129 = 735982641
27273 * 27273 = 743816529
29034 * 29034 = 842973156
29106 * 29106 = 847159236
30384 * 30384 = 923187456

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值