• 7744问题


     方法一:

    注意浮点数可能存在在的误差

    #include"iostream"
    #include"cmath"
    using namespace std; 
    
    int main()
    {
        for(int a=1;a<=9;a++){
            for(int b=0;b<=9;b++){
                int n=a*1100+b*11;                //aabb数 
                int m=floor(sqrt(n)+0.5);
                if(m*m == n)printf("%d
    ",n);     //不能用if(sqrt(n))==floor(sqrt(n)))  printf("%d
    ",n),因为浮点数的运算可能存在误差    
            }
        }
        return 0;
    }

    此处0.5也会受到浮点误差的影响

    方法二:

     枚举,利用了break 与 continue。

    #include"iostream"
    #include"cmath"
    using namespace std; 
    
    int main()
    {
        for(int x=1;;x++)
        {
            int n=x*x;
            if(n < 1000) continue;
            if(n > 9999) break;
            int hi = n / 100;
            int lo = n % 100;
            if(hi/10 == hi%10 && lo/10 == lo%10)printf("%d
    ",n);
        }
        return 0;
    }
    柳暗花明又一村
  • 相关阅读:
    Bundle类
    AlertDialog
    认识Android
    TextView属性详解
    Android中设置文字大小的定义类型
    理解偏差
    python爬虫实验2
    python爬虫实验
    PHP sql注入漏洞修复(字符串型)
    java实现远程控制
  • 原文地址:https://www.cnblogs.com/ucandoit/p/8228316.html
Copyright © 2020-2023  润新知