高精度模板_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 ...
随机推荐
- <Effective C++>读书摘要--Implementations<二>
<Item29> Strive for exception-safe code. 1.如下面的代码 class PrettyMenu { public: ... void changeBa ...
- JTS空间分析工具包(GIS开源)学习 JAVA
JST空间分析工具包是一套JAVA API,提供一系列的空间数据分析操作.最近开发项目刚好需要用到,上网搜资料也少,就自己写下来记录一下.C++版本的拓扑分析开源工具叫:geos:.NET版本的拓扑分 ...
- 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已
Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的,补充送那啥邀请码. 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 &q ...
- cacti设置redis监控端口
1.在Console->Data Templates中选择Redis的模版 在custom Data中勾选中Port2并保存 2.在Console->Data Input Methods中 ...
- tcp发送缓冲区中的数据都是由产生数据的进程给推送到ip层还是有定时任务触发?
和几个变量有非常大的关系 发送缓冲区的大小,如何单独设置一个socket的发送缓冲区 socketopt 发送缓冲区中的数据,如果被拥塞窗口限制住了,那么这些数据可能就放在tcpbuffer里的,此时 ...
- MySQL event调度
基本命令 //查看事件调度是否开启 show variables like '%event_scheduler%'; //开启事件调度 SET GLOBAL event_scheduler = ON; ...
- SpringBoot使用servletAPI与异常处理
工程结构: 主方法类: package com.boot.servlet.api.bootservlet; import org.springframework.boot.SpringApplicat ...
- RT-thread-2.0.1移植(基于STM32F4xx)
1.将下载的rt-thread-2.0.1解压后,得到如下图所示的文件列表. 在bsp目录下可以找到stm32f40x文件夹,这文件夹里面包括了库函数,其他芯片平台的文件夹统统删掉.在libcpu下, ...
- 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组+离散化
题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一 ...
- BZOJ4028 HEOI2015公约数数列(分块)
前缀gcd的变化次数是log的,考虑对每一种gcd查询,问题变为查询一段区间是否存在异或前缀和=x/gcd. 无修改的话显然可以可持久化trie,但这玩意实在没法支持修改.于是考虑分块. 对于每一块将 ...