• 【蓝桥杯】排他平方数


    排它平方数


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

        原来,203879 * 203879 = 41566646641

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

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

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

    暴力枚举:

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 int vis[10];
     5 
     6 int judge(long long a){
     7     while(a){
     8         if(vis[a%10]==0){
     9             vis[a%10]++;
    10             a /= 10;
    11         }
    12         else return 0;
    13     }
    14     return 1;
    15 }
    16 int judge2(long long b){
    17     while(b){
    18         if(vis[b%10]!=0) return 0;
    19         b /= 10;
    20     }
    21     return 1;
    22 }
    23 
    24 int main() 
    25 {
    26     
    27     for(long long i = 123456;i<=987654;i++){
    28         memset(vis,0,sizeof(vis));
    29         if(judge(i)&&judge2(i*i)){
    30             cout<<i<<" "<<i*i<<endl;
    31         }
    32     }
    33     
    34     return 0 ;
    35 }

    有两个判重函数,一个是判断数i各个数位上是否有重复数字;一个是判断i*i各个数位上是否有和i各个数位上相同的数字。

    for循环从123456到987654很巧妙(不是我想出来的!)

    还是题做的太少啊啊

    运行结果:

  • 相关阅读:
    Electio Time poj
    排列的字典序问题
    poj 2365
    编程中的命名设计那点事(转)
    编程命名中的7+1个提示(转)
    poj 1664 放苹果——递归
    再论字典序
    poj 3618
    sort用法
    poj 1088
  • 原文地址:https://www.cnblogs.com/Aikoin/p/10467496.html
Copyright © 2020-2023  润新知