高精度模板_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 ...
随机推荐
- python学习第一天-语法学习
1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来自 ...
- TCP系列25—重传—15、DSACK虚假重传探测
一.DSACK介绍 RFC2883通过指定使用SACK来指示接收端的重复包(duplicate packet)扩展了RFC2018对SACK选项的定义(SACK选项的介绍和示例参考前面内容).RFC2 ...
- 利用Vue v-model实现一个自定义的表单组件
原文请点此链接 http://blog.csdn.net/yangbingbinga/article/details/61915038
- 2018年小米高级 PHP 工程师面试题(模拟考试卷)
1.通过哪一个函数,可以把错误转换为异常处理? A:set_error_handler B:error_reporting C:error2exception D:catch 正确答案:A 答案分析: ...
- mybatis小结-001
代码不能直接copy运行,有些内容是为了说明知识点 1,sqlMqpConfig.xml <?xml version="1.0" encoding="UTF-8&q ...
- Android各分辨率定义的图片规格
我们定义的app图片规格 app图标需要分iphone和android两套 iphone: 名称 Iphone4 Iphone5 手机尺寸 960*640(高*宽) 1136*640 (高*宽) 电池 ...
- Delphi 自定义窗体(最大化、最小化、关闭、窗体的移动)
Uses ShellAPI; 1.//最小化procedure TForm1.btn1Click(Sender: TObject);var I, J, X, Y: Word;begin //第一种 ...
- BZOJ2668:[CQOI2012]交换棋子——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2668 https://www.luogu.org/problemnew/show/P3159#sub ...
- android eclipse ndk使用记录
为方便开发jni程序,android提供了ndk包来简化开发过程,避免开发人员下载完整的平台代码,并且可以在windows环境下集成到eclipse里面,大大加快了开发速度.这里记录下一个简单例子. ...
- Codeforces Round #340 (Div. 2) D
D. Polyline time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...