高精度(压位+判负数+加减乘+读写)

本算法目前属于还处于测试状态,欢迎Hack!


struct gj{bool fu; //是否是负数int tt,mod; //高精的长度int s[40005]; //压位用的数组inline gj(){ //整体初始化fu=0; tt=0; mod=1e9;memset(s,0,sizeof(s));}inline gj read(){  register char ch; //高精度读入while(!isdigit(ch=getchar()))if(ch=='-')fu=1;char _[100005]; rg l=0,r=-1; _[0]=ch;while(isdigit(_[++l]=getchar()));; tt=l/9-!(l%9);for(rg i=(l-1)%9+1;i;--i) (s[tt]*=10)+=_[++r]^48;for(rg i=tt-1;i>=0;--i)for(rg j=0;j<9;++j)(s[i]*=10)+=(_[++r]^48);while(tt&&!s[tt])--tt;; return (*this);}inline void print(){ //高精度输出if(fu)putchar('-');printf("%d",s[tt]);for(rg i=tt-1;i>=0;--i)printf("%09d",s[i]);putchar('\n');}inline bool operator >(const gj &x){ //定义大于if(tt!=x.tt)return tt>x.tt;for(rg i=tt;i>=0;--i)if(s[i]!=x.s[i])return s[i]>x.s[i];return 0;}inline bool operator <(const gj &x){ //定义小于if(tt!=x.tt)return tt<x.tt;for(rg i=tt;i>=0;--i)if(s[i]!=x.s[i])return s[i]<x.s[i];return 0;}inline gj operator =(int x){ //int的等于while(tt)s[tt]=0,--tt;s[0]=x%mod; s[1]=x/mod;if(s[1])tt=1;; return *this;}inline gj operator =(ll x){ //ll的等于while(tt)s[tt]=0,--tt;while(x)s[tt]=x%mod,x/=mod,++tt;if(!s[tt])--tt;; return *this;}inline void add(const gj &x){ //加法的底层rg sign=0; if(x.tt>tt)tt=x.tt;for(rg i=0;i<=tt;++i){s[i]+=x.s[i]+sign; sign=0;if(s[i]>mod)s[i]-=mod,sign=1;}if(sign)s[++tt]=1;}inline void cut(const gj &x){ //减法的底层if(fu)cout<<54564<<endl;rg sign=0; for(rg i=0;i<=tt;++i){s[i]-=x.s[i]+sign; sign=0;if(s[i]<0)s[i]+=mod,sign=1;}while(tt&&!s[tt])--tt;if(!tt&&!s[tt]) fu=0;}inline void mul(const gj &x){ //乘法的底层gj y; ll num; y.tt=tt+x.tt;for(rg i=0;i<=tt;++i){ num=0;for(rg j=0;j<=x.tt;++j){num=(ll)s[i]*x.s[j]+y.s[j+i]+num;y.s[j+i]=num%mod; num/=mod;} if(num)y.s[x.tt+i+1]=num;}if(num)++y.tt;; *this=y;}inline void operator +=(gj x){ //赋值加法重载if(fu==x.fu){(*this).add(x); return;}if(*this>x) (*this).cut(x);else x.cut(*this),*this=x,fu^=1;}inline gj operator +(const gj &x){ //加法正常重载gj y=*this; y+=x; return y;}inline void operator -=(gj x){ //赋值减法重载if(fu!=x.fu){(*this).add(x); return;}if(*this>x){(*this).cut(x); return;}x.cut(*this); *this=x; if(s[tt])fu^=1;}inline gj operator -(const gj &x){ //减法正常重载gj y=*this; y-=x; return y;}inline void operator *=(gj x){ //赋值乘法重载if(!s[tt]||!x.s[x.tt]){gj y; *this=y;}if(fu!=x.fu)fu=1;else fu=0;; (*this).mul(x);}inline gj operator *(const gj &x){ //乘法正常重载gj y=*this; y*=x; return y;}inline gj operator *(int x){  gj y; y=x; return (*this)*y;}inline void operator *=(int x){gj y; y=x; (*this)*=y;}inline gj operator +(int x){  gj y; y=x; return (*this)+y;}inline void operator +=(int x){gj y; y=x; (*this)+=y;}inline gj operator -(int x){  gj y; y=x; return (*this)-y;}inline void operator -=(int x){gj y; y=x; (*this)-=y;}
};

转载于:https://www.cnblogs.com/812-xiao-wen/p/10901972.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop从安装Linux到搭建集群环境

简介与环境准备  hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce。近年&#xff0c;随着大数据、云计算、物联网的兴起&#xff0c;也极大的吸引了我的兴趣&#xff0c;看了网上很多文章&#xff0c;感觉还是云里雾里&#xff0c;很多不必要的配置都在入门教程出现…

git推送本地分支到远程分支

场景 有时候我们开发需要开一个分支,这样可以有效的并行开发. 开分支有两种方式: 一种是在远程开好分支,本地直接拉下来;一种是本地开好分支,推送到远程.远程先开好分支然后拉到本地 git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到…

delphi 函数内创建对象 释放_JavaScript 的函数底层运行机制

▲ 点击上方蓝字关注我 ▲文 / 景朝霞来源公号 / 朝霞的光影笔记ID / zhaoxiajingjing图 / 自己画目录0 / 题(1)第一题(2)第二题1 / 引用数据类型&#xff1a;object2 / 引用数据类型&#xff1a;function(1)第二题&#xff0c;简图(2)创建函数(3)执行函数(4)闭包3 / 练习题(1)…

Unity3D学习笔记之五为Prefab添加材质

本次笔记中&#xff0c;我们将利用unity来创建并使用材质&#xff0c;把材质添加到我们的Prefab中去。这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程《Unity游戏引擎的基础入门视频教程》&#xff0c;下载链接附在第二篇学习笔记中。继续上次笔记中所记录的东西&a…

分布式版本控制系统之Git

Git Git 是目前世界上最先进的分布式版本控制系统&#xff08;没有之一&#xff09;作用 源代码管理为什么要进行源代码管理? 方便多人协同开发方便版本控制Git的诞生 作者是 Linux 之父&#xff1a;Linus Benedict Torvalds当初开发 Git 仅仅是为了辅助 Linux 内核的开发&…

oo第三次博客-JML规格

这三周的作业主要是围绕以JML来约束代码开发&#xff0c;以确保程序的正确性与鲁棒性。 Part 1&#xff1a;三次作业的实现与bug 第一次作业没有任何算法和数据结构上的难度&#xff0c;对于Path和PathContainer的各个方法的实现按照给出的规格复读即可。唯一的难点&#xff08…

Kinect开发笔记之一Kinect详细介绍

毕业设计的课题我选择了结合Kinect和Unity3D开发体感游戏&#xff0c;这是我十分感兴趣的一个课题&#xff0c;所以做好当然责无旁贷。准备再写一系列Kinect的学习笔记&#xff0c;记录自己毕设一步一个脚印的历程。1、Kinect背景介绍众所周知&#xff0c;Kinect是一款集成了很…

获取2个地址之间的距离(高德API)

2019独角兽企业重金招聘Python工程师标准>>> string startLonLat SiteHelper.GetLonLat("大连"); //获取起始地经度纬度 string endLonLat SiteHelper.GetLonLat("沈阳"); //获取目的地经度纬度 int distance SiteHelper.GetDistance(star…

WPF属性学习

一.WPF属性系统 CLR属性 .NET中的属性称为CLR属性 转载于:https://www.cnblogs.com/programme-maker/p/10910166.html

chemdraw怎么连接两个结构_利用神经结构搜索构建快速准确轻量级的超分辨率网络...

介绍我们知道&#xff0c;把神经网络拆解&#xff0c;可以把它归结为几个元素的排列组合而成&#xff0c;例如&#xff0c;以卷积神经网络为例&#xff0c;其主要由卷积层&#xff0c;池化层&#xff0c;残差连接&#xff0c;注意力层&#xff0c;全连接层等组成&#xff0c;如…

Unity3D学习笔记之六创建更多的Prefab

在写完第五篇后&#xff0c;因为不知名的原因&#xff0c;我突然不能够上传100KB以上的图片在博客中了。等了几天还是这样&#xff0c;所以我用PS把图片的分辨率一张张调低&#xff0c;让图片的大小都在100左右&#xff0c;将积攒了四篇的学习笔记一起发上来&#xff0c;也算弥…

iOS底层探索(二) - 写给小白看的Clang编译过程原理

iOS底层探索(一) - 从零开始认识Clang与LLVM 写在前面 编译器是属于底层知识&#xff0c;在日常开发中少有涉及&#xff0c;但在我的印象中&#xff0c;越接近底层是越需要编程基本功&#xff0c;也是越复杂的。但要想提升技术却始终绕不开要对底层原理的探究&#xff0c;很多资…

四、构建Node Web程序

---恢复内容开始--- 一、HTTP 服务器的基础知识 1、Node如何向开发者呈现HTTP请求 2、一个用“Hello World”做响应的HTTP服务器 它用了默 认的状态码200&#xff08;表明成功&#xff09;和默认的响应头 3、读取请求头及设定响应头 Node提供了几个修改HTTP响应头的方法&#x…

datagrid 什么时候结束编辑_2020年中考结束后,什么时候出分?什么时候报志愿?...

导语7月19日下午16:00&#xff0c;2020年北京中考正式落下帷幕。考试结束后&#xff0c;很多家长和考生都会长舒一口气&#xff0c;但北京中考在线团队提醒你&#xff0c;现在还不是放松的时刻&#xff0c;中考结束后&#xff0c;还有成绩查询和填报志愿等重要事件等着你。那么…

Unity3D学习笔记之七创建自己的游戏场景

到现在为止我们已经拥有了比较完备的Prefab&#xff0c;已经可以创建宏大的游戏场景&#xff0c;并以第一人称视角在场景中漫游了。这里给大家做个小的示范&#xff0c;建一个小场景大家在创建场景的时候需要自由发挥&#xff0c;做个尽量大的场景出来。这一系列教程以及素材均…

excel if in函数_【Excel函数】Small+Index+IF 一对N返回

通常情况下&#xff0c;Vlookup和lookup函数只能返回满足条件的第一个&#xff0c;剩余的都不会返回。 这也是其函数的一个弊端之一。 若是按照条件&#xff0c;返回所有满足条件的数据&#xff08;1->N&#xff09;的&#xff0c;可是适用组合函数。 Index返回位置&#xf…

Unity3D学习笔记之八为场景添加细节(一)

这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程《Unity游戏引擎的基础入门视频教程》&#xff0c;下载链接附在第二篇学习笔记中。我花了30分钟做了一个中等大小的迷宫场景&#xff0c;不知道大家自己发挥&#xff0c;做的场景大小如何。在完成场景之后&#xff0c…

mysql数据库表的管理(增删改)

表字段管理1. 添加到末尾alter table 表名 add 字段名 数据类型;2 添加到开头alter table 表名 add 数据类型 first;3. 添加到指定位置alter table 表名 add 新字段名 数据类型 after 原有字段名&#xff1b;4. 删除字段alter table 表名 drop 字段名;5. 修改数据类型alter ta…

哪个app最费电_微波炉和烤箱,买哪个划算?

微波炉和烤箱不能说买哪个划算&#xff0c;而是看哪个更适合&#xff1f;我家微波炉和烤箱两个都有&#xff0c;所以这个问题我来回答一下。虽然外形上看起来&#xff0c;微波炉和烤箱似乎没有多大的区别&#xff0c;从功能上看&#xff0c;它们也都是加热&#xff0c;但它们侧…

MATLAB数值计算与符号运算

符号计算 存放的是精确数据&#xff0c;耗存储空间 &#xff0c;运行速度慢&#xff0c;但结果精度高&#xff1b; 数值计算则是以一定精度来计算的&#xff0c;计算结果有误差&#xff0c;但是运行速度快。转载于:https://www.cnblogs.com/shawnchou/p/10927680.html