排它平方数 C++解法
小明正看着 203879 这个数字发呆。
原来,203879 * 203879 = 41566646641
这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求:
- 6位正整数
- 每个数位上的数字不同
- 其平方数的每个数位不含原数字的任何组成数位
以下是代码
。
#include<iostream>
#include<sstream>
#include<string>
#include <stdio.h>
using namespace std;
int main(){
long long int temp,i;
int num,n,m,flag,flag1,j,k;
string res1,res2;
stringstream ss;
flag=0;
flag1=0;
for(i=100000;i<1000000;i++){
ss<<i;
ss>>res1;
for(m=0;m<6;m++){
for(n=0;n<5-m;n++){
if(res1[m]==res1[m+n+1]){
flag=1;
break;
}
}
if(flag==1){
break;
}
}
ss.clear();
if(flag==1){
flag=0;
continue;
}
temp=i*i;
ss<<temp;
ss>>res2;
for(j=0;res2[j]!='\0';j++){
for(k=0;k<6;k++){
if(res2[j]==res1[k]){
flag1=1;
break;
}
}
if(flag1==1){
break;
}
}
ss.clear();
if(flag1==1){
flag1=0;
continue;
}
cout<<i<<' '<<temp<<endl;
}
}
运行结果