zoukankan      html  css  js  c++  java
  • [note]高精度模板

    高精度模板

    先定义一个struct

    struct gj{
    	int l,s[N];
    	bool fh;
    	void Print(){
    		if(fh)putchar('-');
    		for(int i=l;i>=1;i--)printf("%d",s[i]);
    		puts("");
    	}
    }blank;
    

    高精+高精

    加之前判断一下符号
    一负一正转成减法

    gj operator +(gj x,gj y){
    	gj z=blank;z.l=max(x.l,y.l);
    	for(int i=1;i<=z.l;i++){
    		z.s[i]+=x.s[i]+y.s[i];
    		if(z.s[i]>9)z.s[i+1]++,z.s[i]-=10;
    	}
    	if(z.s[z.l+1])z.l++;
    	return z;
    }
    

    高精-高精

    gj operator -(gj x,gj y){
    	gj z=blank;z.l=max(x.l,y.l);
    	for(int i=z.l;i>=1;i--){
    		if(x.s[i]==y.s[i])continue;
    		if(x.s[i]<y.s[i])swap(x,y),z.fh=1;
    		break;
    	}
    	for(int i=1;i<=z.l;i++){
    		z.s[i]+=x.s[i]-y.s[i];
    		if(z.s[i]<0)z.s[i]+=10,z.s[i+1]--;
    	}
    	while(!z.s[z.l]&&z.l>1)z.l--;
    	return z;
    }
    

    高精*高精

    gj operator *(gj x,gj y){
    	gj z=blank;z.l=x.l+y.l;
    	for(int i=1;i<=x.l;i++){
    		int jw=0;
    		for(int j=1;j<=y.l;j++){
    			z.s[i+j-1]+=x.s[i]*y.s[j]+jw;
    			jw=z.s[i+j-1]/10;
    			z.s[i+j-1]%=10;
    		}
    		z.s[i+b.l]=jw;
    	}
    	while(z.l>1&&!z.s[z.l])z.l--;
    	return z;
    }
    
  • 相关阅读:
    JSP实现数据传递(web基础学习笔记三)
    Spring Boot 参数校验
    Spring AOP实践
    Spring AOP介绍
    2018年春节
    InnoDB索引
    Kafka基本知识回顾及复制
    Kakfa消息投递语义
    Kafka Consumer
    Kafka Producer Consumer
  • 原文地址:https://www.cnblogs.com/sdzwyq/p/9930047.html
Copyright © 2011-2022 走看看