排他平方数

Posted bravewtz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排他平方数相关的知识,希望对你有一定的参考价值。

小明正看着 203879 这个数字发呆。

原来,203879 * 203879 = 41566646641 这有什么神奇呢?

仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。

具有这样特点的6位数还有一个,请你找出它!

再归纳一下筛选要求:

1. 6位正整数

2. 每个数位上的数字不同

3. 其平方数的每个数位不含原数字的任何组成数位

分析:直接暴力枚举。。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 
 6 #define ll long long 
 7 int check[10];
 8 int judge(ll a){
 9     while(a){
10         if(check[a%10]==0) check[a%10]++;
11         else{
12             return 0;
13         }
14         a/=10;
15     }
16     return 1;
17 }
18 int judge1(ll a){
19     while(a){
20         if(check[a%10]!=0) return 0;
21         a/=10;
22     }
23     return 1;
24 }
25 
26 int main(int argc, char const *argv[])
27 {
28     for( ll i=123456; i<=987654; i++ ){
29         memset(check,0,sizeof(check));
30         if(!judge(i)) continue; 
31         if(!judge1(i*i)) continue;
32         cout<<i<<endl;
33     }
34     return 0;
35 }

 

以上是关于排他平方数的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯每日一题冲刺国赛

完全平方数--力扣

标记平方数的代码不起作用,这是为啥呢?

java刷题--279完全平方数

双指针---两数平方和

大等于n的最小完全平方数