高精度模板_C++
高精度压位,压9位
read:读入
write:输出
copy:赋值
change:交换
empty:清0
cmp:比较大小,相当于小于号
plus:加法
dec:减法
multy:乘法
除法实在不会写压位的……QuQ
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- typedef long long LL;
- const int W=,N=,w[W]={,,1e2,1e3,1e4,1e5,1e6,1e7,1e8},Max=1e9;
- int c[N];
- char s[N*W];
- namespace bigint
- {
- inline void read(int *p)
- {
- int i,j,k;
- for (s[j=]=getchar();s[j]!=' '&&s[j]!='\n'&&s[j]!=EOF;s[++j]=getchar());
- for (i=,k=W;j>;*(p+i)+=w[k++]*(s[--j]-'')) if (k==W) k=,i++;
- *p=i;
- }
- inline void write(int *p)
- {
- int i=*p,j;
- printf("%d",*(p+*p));
- while (--i)
- {
- for (j=W;--j&&(*(p+i)<w[j]);) putchar('');
- printf("%d",*(p+i));
- }
- }
- inline void copy(int *pa,int *pb)
- {
- int i;
- for (i=;i<=*pb;i++) *(pa+i)=*(pb+i);
- }
- inline void change(int *pa,int *pb)
- {
- int i,t=max(*pa,*pb);
- for (i=;i<=t;i++) swap(*(pa+i),*(pb+i));
- }
- inline void empty(int *p)
- {
- int i;
- for (i=;i<=*p;i++) *(p+i)=;
- *p=;
- }
- inline bool cmp(int *pa,int *pb)
- {
- if (*pa==*pb)
- {
- int i;
- for (i=*pa;i;i--)
- {
- if (*(pa+i)==*(pb+i)) continue;
- return *(pa+i)<*(pb+i);
- }
- }
- return *pa<*pb;
- }
- inline void plus(int *p,int *pa,int *pb)
- {
- int i,t=max(*pa,*pb);
- bool x=;
- for (i=;i<=t;i++)
- {
- *(p+i)=*(pa+i)+*(pb+i)+x;
- if (*(p+i)>=Max)
- {
- x=;
- *(p+i)-=Max;
- }
- else x=;
- }
- *p=t;
- if (x) *(p+(++(*p)))=;
- }
- inline void dec(int *p,int *pa,int *pb)
- {
- bool k=;
- int i;
- for (i=;i<=*pa;i++)
- {
- *(p+i)=*(pa+i)-*(pb+i)-k;
- if (*(p+i)<)
- {
- *(p+i)+=Max;
- k=;
- }
- else k=;
- }
- *p=*pa;
- while (*(p+*p)==) (*p)--;
- }
- inline void multy(int *p,int *pa,int *pb)
- {
- LL k;
- int i,j;
- for (i=;i<=*pa;i++)
- for (j=;j<=*pb;j++)
- {
- k=(LL)(*(pa+i))*(*(pb+j));
- c[i+j-]=k%Max;
- c[i+j]=k/Max;
- c[]=i+j;
- if (k<Max) c[]--;
- plus(p,p,c);
- c[i+j-]=;
- c[i+j]=;
- }
- *p=c[];
- }
- }
- int main()
- {
- return ;
- }
高精度模板_C++的更多相关文章
- [Template]高精度模板
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
- C++高精度模板
原文地址:http://blog.csdn.net/wall_f/article/details/8373395 原文只附代码,没有解析,本文增加了一些对代码的解释. 请注意:本模板不涉及实数运算与负 ...
- [note]高精度模板
高精度模板 先定义一个struct struct gj{ int l,s[N]; bool fh; void Print(){ if(fh)putchar('-'); for(int i=l;i> ...
- 高精度模板 支持各种运算 c++
绪言 自从有了高精度模板,妈妈再也不用怕我不会打高精度了! 代码 代码长度与日俱增啊~~~ #include<iostream> #include<cstring> #incl ...
- 高精度模板 Luogu P1932 A+B & A-B & A*B & A/B Problem
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
- Java 大数、高精度模板
介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...
- JAVA高精度模板
刚开始还坚持用C++写高精来着,后来发现JAVA写高精方便太多了,所以也来学习一下JAVA高精度的模板. 参考:https://www.cnblogs.com/imzscilovecode/p/883 ...
- 高精度模板 洛谷Luogu P1932 A+B & A-B & A*B & A/B Problem
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
- HashTable类模板_C++
好久没看数据结构了,今天终于要用到hash,整理一下写了个hash类模板 template<typename T> class DataType { public: T key; Data ...
随机推荐
- QWidget一生,从创建到销毁事件流
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流 本文地址:http://techieliang ...
- 【Linux】- rm命令
Linux rm命令用于删除一个文件或者目录. 语法 rm [options] name... 参数: -i 删除前逐一询问确认. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认. -r 将目 ...
- phpcms 模型
- 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()是无法解决编码问题.尝试了无数办法,都无法 ...
- CodeChef LEMOVIE
题意:给你n个数字(下标不同数值相同的数字应当被认为是不同的数字),有n!种排列方式.每种排列方式的价值定义为:第一次出现时比前面的所有数字都大的数值个数. 比如1,2,2,3这个排列中,1,2,3这 ...
- 【bzoj4698】[Sdoi2008] Sandy的卡片 后缀数组
题目描述 Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型.每一张卡片都由一些数字进行标记,第i张卡片的序列 ...
- 判断form表单每个input字段是否有内容
//---------------------------------------------------input失去焦点时判断是否有值 btn_click: function () { //inp ...
- BZOJ1040 骑士 【环套树 树形dp】
1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5611 Solved: 2166 [Submit][Stat ...
- 项目管理---git----快速使用git笔记(七)------coding.net项目管理多人操作的流程规范--合并代码审核
我们在前面已经介绍了coding.net和本地git的基本用法. 但是多人协作开发时情况会复杂得多,所以我们最好有一些规范来保证项目多人开发顺利进行. 比如说 规范一 master代码分支 需要开启 ...
- bzoj1014: [JSOI2008]火星人prefix(splay+hash+二分)
题目大意:一个字符串三个操作:①求两个后缀的LCP②插入一个字符③修改一个字符. 前几天刚学了hash+二分求lcp,就看到这题. 原来splay还能这么用?!原来splay模板这么好写?我以前写的s ...