C++高精度模板

这篇博客介绍了作者依据紫书第5章使用C++实现的一个高效高精度模板,该模板已通过Python对拍验证和UVa的5道高精度题目。尽管类名不同,但通过typedef可以方便地与旧版高精度代码兼容。尽管在UVa748题目中需要单独编写代码,但新模板的运行效率接近旧版,且程序的健壮性显著提高。
摘要由CSDN通过智能技术生成

       依据紫书第5章,我用新的方法实现一个高精度类。模板通过了自己用python进行的对拍,还有UVa的5道高精度题。由于类名不同,闲麻烦的可以加一句“typedef BigInteger bign”,就能用旧版高精度博文里的main函数代码直接AC。不过UVa748的代码要另写。

       从UVa返回的时间来看,新版的高精度效率并没有慢多少,然而程序强健性高多了。

#include <algorithm> // max
#include <cassert>   // assert
#include <cstdio>    // printf,sprintf
#include <cstring>   // strlen
#include <iostream>  // cin,cout
#include <string>    // string类
#include <vector>    // vector类
using namespace std;

struct BigInteger {
    typedef unsigned long long LL;

    static const int BASE = 100000000;
    static const int WIDTH = 8;
    vector<int> s;

    BigInteger& clean(){while(!s.back()&&s.size()>1)s.pop_back(); return *this;}
    BigInteger(LL num = 0) {*this = num;}
 
  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值