1. #include <cmath>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <iostream>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. const int Bit = ;
  10. const int Max_N = ;
  11.  
  12. struct BigNumber {
  13. long long num[Max_N];
  14. int len;
  15.  
  16. BigNumber () {
  17. len = ;
  18. memset(num, , sizeof num);
  19. }
  20.  
  21. BigNumber (long long A) {
  22. len = ;
  23. while (A) {
  24. num[++ len] = A % Bit;
  25. A /= Bit;
  26. }
  27. }
  28.  
  29. void Clear() {
  30. len = ;
  31. memset(num, , sizeof num);
  32. }
  33.  
  34. BigNumber operator = (const BigNumber &A) const {
  35. BigNumber ret;
  36. ret.len = A.len;
  37. for (int i = ; i <= A.len; ++ i) {
  38. ret.num[i] = A.num[i];
  39. }
  40. return ret;
  41. }
  42.  
  43. BigNumber operator + (const BigNumber &A) const {
  44. BigNumber ret;
  45. ret.len = max(A.len, len) + ;
  46. for (int i = ; i <= len; ++ i) {
  47. ret.num[i + ] += (A.num[i] + num[i]) / Bit;
  48. ret.num[i] += (A.num[i] + num[i]) % Bit;
  49. }
  50. while (!ret.num[ret.len] && ret.len) -- ret.len;
  51. return ret;
  52. }
  53.  
  54. BigNumber operator - (const BigNumber &A) const {
  55. BigNumber ret = *this;
  56. ret.len = max(len, A.len) + ;
  57. for (int i = ; i <= A.len; ++ i) {
  58. ret.num[i] -= A.num[i];
  59. if (ret.num[i] < ) {
  60. ret.num[i] += Bit;
  61. ret.num[i + ] --;
  62. }
  63. }
  64. while (!ret.num[ret.len] && ret.len) -- ret.len;
  65. return ret;
  66. }
  67.  
  68. BigNumber operator * (const BigNumber &A) const {
  69. BigNumber ret;
  70. ret.len = len + A.len + ;
  71. for (int i = ; i <= len; ++ i) {
  72. for (int j = ; j <= A.len; ++ j) {
  73. long long v = 1LL * num[i] * A.num[j] + ret.num[i + j - ];
  74. ret.num[i + j] += v / Bit;
  75. ret.num[i + j - ] += v % Bit;
  76. }
  77. }
  78. while (!ret.num[ret.len] && ret.len) -- ret.len;
  79. return ret;
  80. }
  81.  
  82. BigNumber operator / (const int &A) const {
  83. BigNumber ret;
  84. ret.len = len + ;
  85. for (int i = ret.len; i > ; -- i) {
  86. ret.num[i - ] = (ret.num[i] + num[i]) % A * Bit;
  87. ret.num[i] = (ret.num[i] + num[i]) / A;
  88. }
  89. ret.num[] = ;
  90. while (!ret.num[ret.len] && ret.len) -- ret.len;
  91. return ret;
  92. }
  93.  
  94. void Read() {
  95. Clear();
  96. static char S[];
  97. scanf("%s", S + );
  98. int N = strlen(S + );
  99. long long Pow = ;
  100. for (int i = N; i; -- i) {
  101. if (Pow == ) ++ len;
  102. num[len] += (S[i] - '') * Pow;
  103. Pow *= ;
  104. if (Pow == Bit) Pow = ;
  105. }
  106. }
  107.  
  108. void Write() {
  109. printf("%lld", num[len]);
  110. for (int i = len - ; i > ; -- i) {
  111. printf("%09lld", num[i]);
  112. }
  113. }
  114. } ;
  115.  
  116. namespace WorkSpace {
  117. void Main() {
  118. BigNumber A;
  119. A.Read();
  120. long long B;
  121. scanf("%lld", &B);
  122. BigNumber(B).Write(); puts("");
  123. (A * BigNumber(B)).Write();
  124. return ;
  125. }
  126. }
  127.  
  128. int main() {
  129. WorkSpace :: Main();
  130. return ;
  131. }

by yjl

      ——QAQ%%%yjl

QAQ高精度模板笔记√的更多相关文章

  1. QAQ数论模板笔记√

    #include <cstdio> using namespace std; long long gcd(long long a, long long b) { // (a, b) ret ...

  2. [Template]高精度模板

    重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...

  3. C++高精度模板

    原文地址:http://blog.csdn.net/wall_f/article/details/8373395 原文只附代码,没有解析,本文增加了一些对代码的解释. 请注意:本模板不涉及实数运算与负 ...

  4. [note]高精度模板

    高精度模板 先定义一个struct struct gj{ int l,s[N]; bool fh; void Print(){ if(fh)putchar('-'); for(int i=l;i> ...

  5. 高精度模板 支持各种运算 c++

    绪言 自从有了高精度模板,妈妈再也不用怕我不会打高精度了! 代码 代码长度与日俱增啊~~~ #include<iostream> #include<cstring> #incl ...

  6. 高精度模板 Luogu P1932 A+B & A-B & A*B & A/B Problem

    P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...

  7. c++模板笔记

    使用vc2015进行C++ 模板的学习实验和笔记 用简单示例学习了解STL template大部头理论书 讲解各种规则和各种规则例外的解决办法 集中精力在20%的规则中的阴暗角落而不是80%实践中要注 ...

  8. Java 大数、高精度模板

    介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...

  9. JAVA高精度模板

    刚开始还坚持用C++写高精来着,后来发现JAVA写高精方便太多了,所以也来学习一下JAVA高精度的模板. 参考:https://www.cnblogs.com/imzscilovecode/p/883 ...

随机推荐

  1. CentOS6.5升级手动安装gcc4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  2. MySQL 单表百万数据记录分页性能优化

    文章转载自:http://www.cnblogs.com/lyroge/p/3837886.html 背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台 ...

  3. Silverlight自动根据屏幕分辨率进行布局

    xaml: <UserControl x:Class="SLCenterLayout.MainPage" xmlns="http://schemas.microso ...

  4. PHP中数组排序实例学习

    先介绍下php中用于数组排序的函数: 排序方法                           升序                             降序                 ...

  5. 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)

    我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...

  6. 系统中使用frameset和Iframe刷新页面session失效

    问题:Asp.net中每次刷新页面,session中保存的只就丢失 原因: 1.有些杀毒软件会去扫描web.config文件 2.程序内部有让session丢失的代码,或服务器内存不足 3.程序有框架 ...

  7. Python脚本控制的WebDriver 常用操作 <二十七> 文件下载

    测试用例场景 webdriver允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中. Python脚本 测试用Python代码: # coding=gbk ''' Crea ...

  8. wpf MVVM ViewModel 关闭View显示

    上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial ...

  9. Android开发——AsyncTask详解

    android提供AsynvTask,目的是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. Android为了降低开发难度,提供了AsyncTask.Asyn ...

  10. 在Linux下写一个简单的驱动程序

    本文首先描述了一个可以实际测试运行的驱动实例,然后由此去讨论Linux下驱动模板的要素,以及Linux上应用程序到驱动的执行过程.相信这样由浅入深.由具体实例到抽象理论的描述更容易初学者入手Linux ...