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