博客园 首页 私信博主 显示目录 隐藏目录 管理

排他平方数

小明正看着 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 }

 

posted @ 2019-02-27 21:36  Brave_WTZ  阅读(307)  评论(0编辑  收藏  举报