算法竞赛入门经典BigInteger的实现,其中有些地方还是不是很懂,先存着,看懂的网友可以帮忙标注下,然后交流学习下。

参考代码

struct BigInteger {static const int BASE = 100000000;//其数量级代表数组每个元素能够存的位数。数量级是几说明每个元素能存的位数就是几。如10:则只能存0-9;100:存0-99
//  static const int BASE = 100;static const int WIDTH = 8; // 代表数组每个元素能够存的位数vector<int> s;BigInteger(long long num = 0) {*this = num;    // 构造函数   用this指代大整数,对于指针来说永远是4字节。很方便。 }BigInteger operator = (long long num) { // 赋值运算符s.clear();//cout<<num<<endl;do {cout<<num % BASE<<endl;s.push_back(num % BASE);//老套路了,先求余,再把余舍去。进制转换也是这个原理(只不过最后是倒着输出) num /= BASE;cout<<num<<endl;} while(num > 0);return *this;}BigInteger operator = (const string& str) { // 赋值运算符  这部分大佬写的很精辟,所以我看不懂。 s.clear();int x, len = (str.length() - 1) / WIDTH + 1;for(int i = 0; i < len; i++) {int end = str.length() - i*WIDTH;int start = max(0, end - WIDTH);sscanf(str.substr(start, end-start).c_str(), "%d", &x);s.push_back(x);}return *this;}BigInteger operator + (const BigInteger& b) const {//大佬写的很棒,但我不懂。 BigInteger c;c.s.clear();for(int i = 0, g = 0; ; i++) {if(g == 0 && i >= s.size() && i >= b.s.size()) break;int x = g;if(i < s.size()) x += s[i];if(i < b.s.size()) x += b.s[i];c.s.push_back(x % BASE);g = x / BASE;}return c;}
};ostream& operator << (ostream &out, const BigInteger& x) {//重载 << out << x.s.back();//第一部分有可能不会占满,所以直接输出。 for(int i = x.s.size()-2; i >= 0; i--) {//逆序输出 数组  char buf[20];//用于存放数据 sprintf(buf, "%08d", x.s[i]);// 将 每个元素 放到 buf字符串中去,不足的左补0 for(int j = 0; j < strlen(buf); j++) out << buf[j];//输出即可 }return out;//方便链式书写。
}istream& operator >> (istream &in, BigInteger& x) {// 重载 >> string s;if(!(in >> s)) return in;//先把字符串读进  s x = s;//  把  s 赋值给  要赋的那个值。  x是那个值的引用哦。 return in;
}#include<set>
#include<map>
set<BigInteger> s;
map<BigInteger, int> m;int main() {BigInteger y;BigInteger x = y;BigInteger z = 123;BigInteger a, b;cin >> a >> b;cout << a + b << "\n";cout << BigInteger::BASE << "\n";//BigInteger b(10),a;
//  a = b;
//  BigInteger b;
//  b  ="1234567890456789123";//cout<<b;return 0;
}

算法竞赛入门经典--大整数类相关推荐

  1. 刘汝佳《算法竞赛入门经典》---总结

    刘汝佳:<算法竞赛入门经典> 三步: 基本的数据结构+算法知识: 数论等数学基本知识: 锻炼联想建模能力.知识与实际相结合,解决实际问题! 第一章:程序设计入门 1.a/b 当a.b为整数 ...

  2. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

  3. 《算法竞赛入门经典(第二版)》pdf

    下载地址:网盘下载 内容简介  · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和 ...

  4. 【算法竞赛入门经典】读书笔记

    前言 寒假期间准备一下练一下OJ,对于我这个小菜鸟来说,打稳基础很是关键.听说过[算法竞赛入门经典]的大名,加上自己学习的是 C++ ,而这本书用的是 C ,多学一门语言也是不错的.因此决定每天最少看 ...

  5. 刘汝佳《算法竞赛入门经典(第二版)》习题(二)

    刘汝佳<算法竞赛入门经典(第二版)>第二章习题 目录 刘汝佳<算法竞赛入门经典(第二版)>第二章习题 习题2-1 水仙花数 习题2-2 韩信点兵 习题2-3 倒三角形 习题2- ...

  6. 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)

    文章目录 说明 习题 习6-1 UVA 673 平衡的括号 习6-2 UVA 712 S - 树 习6-3 UVA 536 二叉树重建 习6-4 UVA 439 骑士的移动 习6-5 UVA 1600 ...

  7. 《算法竞赛入门经典(第2版)》

    <算法竞赛入门经典(第2版)> 基本信息 作者: 刘汝佳 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302356288 上架时间:2014-6-5 出版日期 ...

  8. 《算法竞赛入门经典》Chap3

    <算法竞赛入门经典(第二版)>第三章 思考题 题目1 必要的存储量 题目2 统计字符1的个数 示例程序 程序3-1 逆序输出 程序3-2 开灯问题 程序3-3 蛇形填数 程序3-4 竖式问 ...

  9. [读书笔记]《算法竞赛入门经典》第1章

    书名:算法竞赛-入门经典 第2版 作者:刘汝佳 类别:读书笔记 文章目录 前言 第1章 程序设计入门 1.1 算术表达式 1.2 变量及其输入 1.3 顺序结构程序设计(Sequential Prog ...

  10. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

最新文章

  1. ORA-01855: AM/A.M. or PM/P.M. required错误解决
  2. 简单的html5,简单的HTML5初步入门教程
  3. ios 应用 开发流程。。。
  4. 获取另一个驱动的设备结构体_《rt-thread驱动框架分析》-i2c驱动
  5. 应该怎么做一个登录功能?
  6. ListView下拉刷新、上拉载入更多之封装改进
  7. boost any 实现万能容器_全面剖析 C++ Boost 智能指针!| CSDN 博文精选
  8. 有一天我突然接到他的电话
  9. Linux支持运行3dmax,Mesa的Panfrost Gallium3D驱动程序现在可以使用新的DRM驱动程序
  10. android深度探索第二章
  11. 真正的数字化,是CEO决策的底层逻辑要变了
  12. 红孩儿编辑器的输入法模块的函数依赖关系图
  13. 《AutoCAD 2014中文版超级学习手册》——第2章 图层设置 2.1 设置图层
  14. Go技术日报(2021-11-16/17)——gRPC的错误处理实践
  15. 都是was缓存惹的祸
  16. Java的基础语法(二)
  17. 黑马点评关键业务流程梳理一
  18. Appender的几种实现方式
  19. ubuntu下命令行禁用笔记本触摸板
  20. 蓝桥杯python组——猜生日

热门文章

  1. jdk文件夹里点哪个是安装_jdk在哪个文件夹里面
  2. python生成字典脚本
  3. 2020-12-27
  4. python图书管理实训报告总结_图书管理系统设计实训报告
  5. 2017年IT类公司世界500强企业及其简评
  6. 正交匹配追踪算法OMP
  7. DMX512协议解析
  8. Ubuntu 14.04 安装xvid编码器
  9. 机械自动化算不算计算机相关专业,机械工程及自动化属于工程类或工程经济类专业吗?...
  10. 概率论与数理统计(陈希孺)学习笔记