首页 > 其他分享 >压位高精度模板(加,减,乘)

压位高精度模板(加,减,乘)

时间:2023-06-12 18:45:50浏览次数:30  
标签:bignum 高精度 int 压位 return -- ans const 模板

struct bignum{
	#define base 10000
	int a[20000];
	bignum(){memset(a,0,sizeof(a));}
    inline void init(){memset(a,0,sizeof(a));a[0]=1;a[1]=1;}
	inline void read(){
        static char s[1000];scanf("%s",s);
        int n=strlen(s),len=1;
		for(int i=1,k=1;i<=n;i++){
			if(k==10000){len++;k=1;}
			a[len]+=k*(s[n-i]^48);
			k=(k<<1)+(k<<3);
		}a[0]=len;		
	}
    inline bignum trans(int b){
        bignum ans;
        while(b){ans.a[++ans.a[0]]=b%base;b/=base;}
        return ans;
    }
    bignum operator+(const bignum &b){
		bignum ans;
		for(int i=1,x=0,tmp=0;x||i<=a[0]||i<=b.a[0];++i){
			tmp=a[i]+b.a[i]+x;
			ans.a[++ans.a[0]]=tmp%base;
			x=tmp/base;
		}
		return ans;
	}
    bignum operator-(const bignum &b){
		bignum ans;
		for(int i=1,x=0,tmp=0;i<=a[0];++i){
			tmp=a[i]-b.a[i]-x;
			if(tmp>=0) x=0;
			else tmp+=base,x=1;
			ans.a[++ans.a[0]]=tmp;
		}
		while(ans.a[0]>1&&ans.a[ans.a[0]]==0) ans.a[0]--;
		return ans;
	}
    bignum operator*(const bignum &b){
        bignum ans;ans.a[0]=a[0]+b.a[0];
        for(int i=1;i<=a[0];++i){
            for(int j=1,x=0;x||j<=b.a[0];++j){
                ans.a[i+j-1]+=x+a[i]*b.a[j];
                x=ans.a[i+j-1]/base;
                ans.a[i+j-1]%=base;
            }
        }
        while(ans.a[0]>1&&ans.a[ans.a[0]]==0) ans.a[0]--;
        return ans;
    }
    bignum operator*(const int &b){
    	bignum ans;
    	for(int i=1,x=0,tmp=0;x||i<=a[0];++i){
    		tmp=a[i]*b+x;
    		ans.a[++ans.a[0]]=tmp%base;
    		x=tmp/base;
		}
		return ans;
	}
	friend bool operator<(const bignum &x,const bignum &y){
		if(x.a[0]^y.a[0]) return x.a[0]<y.a[0];
		for(int i=x.a[0];i>=1;--i) if(x.a[i]^y.a[i]) return x.a[i]<y.a[i];
		return false;
	}
    friend bool operator>(const bignum &x,const bignum &y){return y<x;}
    friend bool operator==(const bignum &x,const bignum &y){return !(x>y)&&!(x<y);}
	inline void print(){put_int(a[a[0]]);for(int i=a[0]-1;i>=1;i--)printf("%04d",a[i]);putchar('\n');}
	#undef base
};

标签:bignum,高精度,int,压位,return,--,ans,const,模板
From: https://www.cnblogs.com/UNowen/p/17475835.html

相关文章

  • DotNet 自定义模板
    目录DotNet自定义模板创建目录结构template.json生成本地模板使用本地模板生成项目发布到Nuget参考资料DotNet自定义模板创建目录结构下面以artizan-abp-microservice项目为例,解决方案结构:基于该项目创建dotnet模板,首先,创建文件夹templates,所有的项目模板将保存......
  • SpringBoot多模块项目搭建以及搭建基础模板
    多模块项目搭建目录多模块项目搭建1.父项目pom文件编辑2.创建子模块1.父项目pom文件编辑<!--1.父工程添加pom格式--><packaging>pom</packaging><!--定义子模块--><modules><module>walker-service</module><module>walker-utils&......
  • python使用HTTP隧道代理代码示例模板
    以下是使用HTTP隧道代理的Python代码示例模板:```pythonimportrequests#设置代理服务器地址和端口号proxy_host="your_proxy_host"proxy_port="your_proxy_port"#设置代理服务器的用户名和密码(如果需要)proxy_username="your_proxy_username"proxy_password="your_proxy_p......
  • PHP使用HTTP隧道代码示例模板
    以下是使用PHP实现HTTP隧道的代码示例模板:```php<?php//目标网站的URL$targetUrl='ExampleDomain';//获取客户端请求的HTTP方法和请求头$method=$_SERVER['REQUEST_METHOD'];$headers=getallheaders();//创建与目标网站的连接$ch=curl_init();curl_setopt($ch,CURLOPT......
  • Dynamics 365 访问团队模板配置
    1、 访问团队模板实体启用访问团队功能  设置>安全性>访问团队模板 在实体窗体中添加子网格 在该实体中添加用户就可以访问 也可以通过代码创建访问用户  ......
  • Trie树模板与应用
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/algorithms-notes>】或者公众号【AIShareLab】回复算法笔记也可获取。Trie树(字典树)Trie树是用来快速存储和查找字符串集合的数据结构。某个字符串集合对应的有根树。树的每条边上对应有恰好一个字符,每个顶点代......
  • 四套复盘模板
    如果你是想每日回顾,那你复盘的内容就是你的生活;如果你想做项目回顾,那你复盘的内容就是整个项目;如果你想研究团队的行为,那你复盘的内容就是整个团队决策与执行的过程; 复盘至关重要无论是职场还是生活,我们都可以借助复盘对过去的思维和行为进行回顾,反思和探究,找到问题的原......
  • Debian 12 x86_64 OVF (sysin) - VMware 虚拟机模板
    Debian12x86_64OVF(sysin)-VMware虚拟机模板请访问原文链接:https://sysin.org/blog/debian-12-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgDebianGNU/Linux12(bookworm)(Linuxdebian6.1.0-amd64)部署截图及说明自定义OVF属性填写说明:......
  • Luogu P3375 【模板】KMP字符串匹配
    【模板】KMP字符串匹配题目描述给出两个字符串\(s_1\)和\(s_2\),若\(s_1\)的区间\([l,r]\)子串与\(s_2\)完全相同,则称\(s_2\)在\(s_1\)中出现了,其出现位置为\(l\)。现在请你求出\(s_2\)在\(s_1\)中所有出现的位置。定义一个字符串\(s\)的border为\(s\)......
  • 关于模板字面量,我有点好奇它的内部结构
    前言最近翻看源码的时候,发现一些有趣的JS的知识点,基于日常的开发经验,我做了一些联想和对比。整个过程充满了乐趣。于是我想,是不是可以延续这种创意带来的学习的乐趣。带的富含创造力夜晚的buff,确实让我拥有了不错的灵感。这些灵感像繁星一样闪耀着我的夜里,留下一行文字:关于模版......