高精度压位,压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. git初始化之git config

    git初始化之git config     1. 下面的命令将修改/home/[username]/.gitconfig文件,也就是说下面的配置只对每一个ssh的用户可见,所以每个人都需要做.   提 ...

  2. 【Windows】Windows服务管家婆之Service Control Manager

    Service Control Manager,服务控制管理器,人称SCM就是它!在Windows内核中,都可以看到她忙碌的身影,可以说是系统服务和驱动的管家婆了!     SCM管家婆起早贪黑,每次 ...

  3. matlab 并行运算【转】

    一.Matlab并行计算原理梗概 Matlab的并行计算实质还是从主从结构的分布式计算.当你初始化Matlab并行计算环境时,你最初的Matlab进行自动成为主节点,同时初始化多个(具体个数手动设定, ...

  4. kafka-zk-安装测试初体验

    第一步: 安装 安装工具brew install kafka 会自动安装依赖zookeeper 注:安装配置文件位置 /usr/local/etc/kafka|zookeeper 注: #tickTi ...

  5. bzoj2144: 跳跳棋(二分/倍增)

    思维好题! 可以发现如果中间的点要跳到两边有两种情况,两边的点要跳到中间最多只有一种情况. 我们用一个节点表示一种状态,那么两边跳到中间的状态就是当前点的父亲,中间的点跳到两边的状态就是这个点的两个儿 ...

  6. 第六章 指针与const

    const一词在字面上来源于常量constant,const对象在C/C++中是有不同解析的,如第二章所述,在C中常量表达式必须是编译期,运行期的不是常量表达式,因此C中的const不是常量表达式:但 ...

  7. poj2060——Taxi Cab Scheme(最小路径覆盖)

    Description Running a taxi station is not all that simple. Apart from the obvious demand for a centr ...

  8. 微服务与devops的文章推荐

    http://www.sohu.com/a/125040520_355140 http://www.csdn.net/article/2015-11-18/2826253 http://www.cnb ...

  9. spring boot 在IDEA控制台中打印彩色日志

    只需要在application.properties中加入 spring.output.ansi.enabled=ALWAYS 即可

  10. webstorm常用功能快捷方式

    1 自动注释和撤销注释:ctrl+/ 在一句代码前面用 ctrl+/ 可以自动注释和撤销注释,js,html都可以,很好的省去了敲注释符的时间 (mac下为command+/,下同) 2 自动补全ht ...