【蓝桥杯训练】第四届C/C++初赛 排它平方数



题目标题: 排它平方数


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


    原来,203879 * 203879 = 41566646641


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


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


    再归纳一下筛选要求:
    1. 6位正整数
    2. 每个数位上的数字不同
    3. 其平方数的每个数位不含原数字的任何组成数位


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


请通过浏览器提交答案。
注意:只提交另一6位数,题中已经给出的这个不要提交。

注意:不要书写其它的内容(比如:说明性的文字)。



#include<iostream>
using namespace std;
long findh(long long y,long long num)
{
    int i,j;
    int a[6],b[15];
    for(i=0; i<6; i++)
    {
        a[i]=y%10;
        y=(y-a[i])/10;
    }
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
            if(a[i]==a[j])
               return 0;
    }
    i=0;
    while(num>0)
    {
        b[i]=num%10;
        num=(num-b[i])/10;
        i++;
    }
    int x=i;

    for(i=0; i<6; i++)
    {
        for(j=0; j<x; j++)
        {
            if(b[j]==a[i])
                return 0;
        }
    }
    return 1;

}
int main()
{
    long long  i,n,j,sum,a;
    for(i=100000; i<=999999; i++)
    {   sum=i*i;
        if(findh(i,sum))
            cout<<i<<endl;

    }

    return 0;
}


你可能感兴趣的:(【蓝桥杯训练】第四届C/C++初赛 排它平方数)