zoukankan      html  css  js  c++  java
  • 一些易错的地方

    NO.1 移位运算

    long long x= 1<<62; (错)

    正解:long long x=(long long )1<<62;    值为:4611686018427387904  大于1e18,大概是1e18的4倍。

    即是:二进制下1后面62个0,共63位。

    NO.2 math.h

    sqrt()

    double sqrt(double x);
    float sqrtf(float x);
    long double sqrtl(long double x);

      float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
      double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。能绝对保证15位;数值范围:-1.7*10^-308~1.7*10^308

    long double:精度为18~19位,能绝对保证18位。;数值范围:-1.2*10^-4932~1.2*10^4932

    超出范围一定要自己写二分!!!

    pow()

    double pow(double x, double y);
    float powf(float x, float y);
    long double powl(long double x, long double y);

    没有int型的一定要考虑误差,千万不能 int i=pow(10,5);这种写法,答案可能是99999.

    不能把浮点型赋值给整形。因为浮点型是一个近似表示。

    NO.3  #define swap(a,b) (a^=b^=a^=b)

    要注意判断a=a的情况,也就是swap(a,a),比如swap(a[i],a[j])  i==j的情况

  • 相关阅读:
    再见OI,AFO
    时间复杂度
    NOIP真题:矩阵取数问题
    [USACO12FEB]附近的牛Nearby Cows
    合唱队
    子串
    ZJOI2010基站选址
    分治FFT学习笔记
    「HAOI2018」染色
    「SDOI2015」序列统计
  • 原文地址:https://www.cnblogs.com/sun-yinkai/p/8169129.html
Copyright © 2011-2022 走看看