高精度压位,压9位

  read:读入

  write:输出

  copy:赋值

  change:交换

  empty:清0

  cmp:比较大小,相当于小于号

  plus:加法

  dec:减法

  multy:乘法

  除法实在不会写压位的……QuQ

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. typedef long long LL;
  5. const int W=,N=,w[W]={,,1e2,1e3,1e4,1e5,1e6,1e7,1e8},Max=1e9;
  6. int c[N];
  7. char s[N*W];
  8. namespace bigint
  9. {
  10. inline void read(int *p)
  11. {
  12. int i,j,k;
  13. for (s[j=]=getchar();s[j]!=' '&&s[j]!='\n'&&s[j]!=EOF;s[++j]=getchar());
  14. for (i=,k=W;j>;*(p+i)+=w[k++]*(s[--j]-'')) if (k==W) k=,i++;
  15. *p=i;
  16. }
  17. inline void write(int *p)
  18. {
  19. int i=*p,j;
  20. printf("%d",*(p+*p));
  21. while (--i)
  22. {
  23. for (j=W;--j&&(*(p+i)<w[j]);) putchar('');
  24. printf("%d",*(p+i));
  25. }
  26. }
  27. inline void copy(int *pa,int *pb)
  28. {
  29. int i;
  30. for (i=;i<=*pb;i++) *(pa+i)=*(pb+i);
  31. }
  32. inline void change(int *pa,int *pb)
  33. {
  34. int i,t=max(*pa,*pb);
  35. for (i=;i<=t;i++) swap(*(pa+i),*(pb+i));
  36. }
  37. inline void empty(int *p)
  38. {
  39. int i;
  40. for (i=;i<=*p;i++) *(p+i)=;
  41. *p=;
  42. }
  43. inline bool cmp(int *pa,int *pb)
  44. {
  45. if (*pa==*pb)
  46. {
  47. int i;
  48. for (i=*pa;i;i--)
  49. {
  50. if (*(pa+i)==*(pb+i)) continue;
  51. return *(pa+i)<*(pb+i);
  52. }
  53. }
  54. return *pa<*pb;
  55. }
  56. inline void plus(int *p,int *pa,int *pb)
  57. {
  58. int i,t=max(*pa,*pb);
  59. bool x=;
  60. for (i=;i<=t;i++)
  61. {
  62. *(p+i)=*(pa+i)+*(pb+i)+x;
  63. if (*(p+i)>=Max)
  64. {
  65. x=;
  66. *(p+i)-=Max;
  67. }
  68. else x=;
  69. }
  70. *p=t;
  71. if (x) *(p+(++(*p)))=;
  72. }
  73. inline void dec(int *p,int *pa,int *pb)
  74. {
  75. bool k=;
  76. int i;
  77. for (i=;i<=*pa;i++)
  78. {
  79. *(p+i)=*(pa+i)-*(pb+i)-k;
  80. if (*(p+i)<)
  81. {
  82. *(p+i)+=Max;
  83. k=;
  84. }
  85. else k=;
  86. }
  87. *p=*pa;
  88. while (*(p+*p)==) (*p)--;
  89. }
  90. inline void multy(int *p,int *pa,int *pb)
  91. {
  92. LL k;
  93. int i,j;
  94. for (i=;i<=*pa;i++)
  95. for (j=;j<=*pb;j++)
  96. {
  97. k=(LL)(*(pa+i))*(*(pb+j));
  98. c[i+j-]=k%Max;
  99. c[i+j]=k/Max;
  100. c[]=i+j;
  101. if (k<Max) c[]--;
  102. plus(p,p,c);
  103. c[i+j-]=;
  104. c[i+j]=;
  105. }
  106. *p=c[];
  107. }
  108. }
  109. int main()
  110. {
  111.  
  112. return ;
  113. }

高精度模板_C++的更多相关文章

  1. [Template]高精度模板

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

  2. C++高精度模板

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

  3. [note]高精度模板

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

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

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

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

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

  6. Java 大数、高精度模板

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

  7. JAVA高精度模板

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

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

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

  9. HashTable类模板_C++

    好久没看数据结构了,今天终于要用到hash,整理一下写了个hash类模板 template<typename T> class DataType { public: T key; Data ...

随机推荐

  1. QWidget一生,从创建到销毁事件流

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流     本文地址:http://techieliang ...

  2. 【Linux】- rm命令

    Linux rm命令用于删除一个文件或者目录. 语法 rm [options] name... 参数: -i 删除前逐一询问确认. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认. -r 将目 ...

  3. phpcms 模型

  4. Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 ‘\u559c\u6b22\u4e00\u4e2a\u4eba ’ 转为utf-8的解决办法

    相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码,直接s.decode()是无法解决编码问题.尝试了无数办法,都无法 ...

  5. CodeChef LEMOVIE

    题意:给你n个数字(下标不同数值相同的数字应当被认为是不同的数字),有n!种排列方式.每种排列方式的价值定义为:第一次出现时比前面的所有数字都大的数值个数. 比如1,2,2,3这个排列中,1,2,3这 ...

  6. 【bzoj4698】[Sdoi2008] Sandy的卡片 后缀数组

    题目描述 Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型.每一张卡片都由一些数字进行标记,第i张卡片的序列 ...

  7. 判断form表单每个input字段是否有内容

    //---------------------------------------------------input失去焦点时判断是否有值 btn_click: function () { //inp ...

  8. BZOJ1040 骑士 【环套树 树形dp】

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5611  Solved: 2166 [Submit][Stat ...

  9. 项目管理---git----快速使用git笔记(七)------coding.net项目管理多人操作的流程规范--合并代码审核

    我们在前面已经介绍了coding.net和本地git的基本用法. 但是多人协作开发时情况会复杂得多,所以我们最好有一些规范来保证项目多人开发顺利进行. 比如说 规范一 master代码分支  需要开启 ...

  10. bzoj1014: [JSOI2008]火星人prefix(splay+hash+二分)

    题目大意:一个字符串三个操作:①求两个后缀的LCP②插入一个字符③修改一个字符. 前几天刚学了hash+二分求lcp,就看到这题. 原来splay还能这么用?!原来splay模板这么好写?我以前写的s ...