高精度模板_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 ...
随机推荐
- git初始化之git config
git初始化之git config 1. 下面的命令将修改/home/[username]/.gitconfig文件,也就是说下面的配置只对每一个ssh的用户可见,所以每个人都需要做. 提 ...
- 【Windows】Windows服务管家婆之Service Control Manager
Service Control Manager,服务控制管理器,人称SCM就是它!在Windows内核中,都可以看到她忙碌的身影,可以说是系统服务和驱动的管家婆了! SCM管家婆起早贪黑,每次 ...
- matlab 并行运算【转】
一.Matlab并行计算原理梗概 Matlab的并行计算实质还是从主从结构的分布式计算.当你初始化Matlab并行计算环境时,你最初的Matlab进行自动成为主节点,同时初始化多个(具体个数手动设定, ...
- kafka-zk-安装测试初体验
第一步: 安装 安装工具brew install kafka 会自动安装依赖zookeeper 注:安装配置文件位置 /usr/local/etc/kafka|zookeeper 注: #tickTi ...
- bzoj2144: 跳跳棋(二分/倍增)
思维好题! 可以发现如果中间的点要跳到两边有两种情况,两边的点要跳到中间最多只有一种情况. 我们用一个节点表示一种状态,那么两边跳到中间的状态就是当前点的父亲,中间的点跳到两边的状态就是这个点的两个儿 ...
- 第六章 指针与const
const一词在字面上来源于常量constant,const对象在C/C++中是有不同解析的,如第二章所述,在C中常量表达式必须是编译期,运行期的不是常量表达式,因此C中的const不是常量表达式:但 ...
- poj2060——Taxi Cab Scheme(最小路径覆盖)
Description Running a taxi station is not all that simple. Apart from the obvious demand for a centr ...
- 微服务与devops的文章推荐
http://www.sohu.com/a/125040520_355140 http://www.csdn.net/article/2015-11-18/2826253 http://www.cnb ...
- spring boot 在IDEA控制台中打印彩色日志
只需要在application.properties中加入 spring.output.ansi.enabled=ALWAYS 即可
- webstorm常用功能快捷方式
1 自动注释和撤销注释:ctrl+/ 在一句代码前面用 ctrl+/ 可以自动注释和撤销注释,js,html都可以,很好的省去了敲注释符的时间 (mac下为command+/,下同) 2 自动补全ht ...