您的位置:首页 > 其它

排它平方数

2016-02-28 13:39 274 查看
题目标题: 排它平方数

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

原来,203879 * 203879 = 41566646641

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

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

再归纳一下筛选要求:

1. 6位正整数

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

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

答案是一个6位的正整数。

思路:1、注意用到一个6位数的平方,所以int是不够用的,所以用long long 。

2、用循环求余,取出原6位数的每一位(函数check),若没有重复则再取出它平方后的每一位函数(checkb),再进行判断即可。

3、答案是 639172

#include <iostream>
#include <string.h>
using namespace std;
int A[10],B[10];
int check (long long a){
do{
int k=a%10;
if(A[k]!=0){
return 0;//有重复返回0
}
A[k]=1;
a=a/10;
}while(a);
return 1;
}

int checkb(long long  j){
do{
int m=j%10;
if(A[m]!=0) return 0;
j= (j/10);
}while(j);
return 1;
}
int main(){

for(long long i=102345;i<=987654;i++){
memset(A,0,sizeof(A));
int t=check(i);
if(t){
long long  j=i*i;
t=checkb(j);
if(t)cout<<i<<" "<<j<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: