zoukankan      html  css  js  c++  java
  • 关于精度,模运算和高精的问题//19/07/14

    Q1:小数输出时,如果要求不四舍五入?

    A1:有个好玩的STL叫 sprintf ,能让你把你的数字就像在屏幕上输出一样,输出到一个字符串里

    使用格式为sprintf(目标字符串,"输出形式",原数组)

    使用样例

        sprintf(ans+1,"%.3lf",l);
        ans[strlen(ans+1)] = '
    ';
        printf("%s",ans+1);

    这样就可以快乐输出了

    Q2:为什么模数才10007快速幂int就爆了?

    A2:快速幂的底数完全可以比你的模数大,轻轻松松爆int,所以在快速幂关键位置要用longlong

    虚假的快速幂

    int qp(int a,int x) {
        int ret = 1;
        while(x){
            if(x&1){
                ret *= a;
                ret %= MOD;
            }
            a*=a;
            a%=MOD;
            x>>=1;
        }
        return ret;
    }

    真正的快速幂

    int qp(long long a,int x) {
        long long ret = 1;
        while(x){
            if(x&1){
                ret *= a;
                ret %= MOD;
            }
            a*=a;
            a%=MOD;
            x>>=1;
        }
        return ret;
    }

    Q3:高精好难背啊真的不想写

    A3:高精代码不需要背,清楚自己要维护len和a的正确和规范性就可以了,毒瘤的方面他也不会考

  • 相关阅读:
    python字典推导式
    什么是Python 自省
    类变量和实例变量
    Python 使用正则表达式匹配URL网址
    python is 和 “==”的区别
    阮一峰老师的bash教程,建议阅读
    python里的闭包
    什么是生成器
    python访问限制
    pytorch使用Tips
  • 原文地址:https://www.cnblogs.com/SINXIII/p/11168520.html
Copyright © 2011-2022 走看看