zoukankan      html  css  js  c++  java
  • 高精板子vector

    #include<bits/stdc++.h>
    #define vint vector<int>
    using namespace std;
    
    vint hread(){
    	vint r;
    	string s;
    	cin>>s;
    	for(register int i=s.size()-1;i>=0;i--)
    		r.push_back(s[i]-48);
    	return r;
    }
    
    vint hplus(vint x,vint y){
    	vint z(max((int)x.size(),(int)y.size())+1);
    	z[0]=0;
    	for(register int i=0;i<(int)z.size()-1;i++){
    		if(i<(int)x.size())
    			z[i]+=x[i];
    		if(i<(int)y.size())
    			z[i]+=y[i];
    		z[i+1]=z[i]/10;
    		z[i]%=10;
    	}
    	if((int)z.size()>1 && !z.back())
    		z.pop_back();
    	return z;
    }
    
    vint hmult(vint x,vint y){
    	vint z((int)x.size()+(int)y.size());
    	for(register int i=0;i<(int)z.size();i++)
    		z[i]=0;
    	for(register int i=0;i<(int)x.size();i++){
    		for(register int j=0;j<(int)y.size();j++)
    			z[i+j]+=x[i]*y[j];
    	}
    	for(register int i=0;i<(int)z.size();i++){
    		z[i+1]+=z[i]/10;
    		z[i]%=10;
    	}
    	while((int)z.size()>1 && !z.back())
    		z.pop_back();
    	return z;
    }
    
    vint hdiv(vint x,int y){
    	vint z((int)x.size());
    	for(register int i=0;i<(int)z.size();i++)
    		z[i]=0;
    	int si=(int)x.size();
    	x.push_back(0);
    	for(register int i=si-1;i>=0;i--){
    		x[i]+=(x[i+1]%y)*10;
    		z[i]=x[i]/y;
    	}
    	while((int)z.size()>1 && !z.back())
    		z.pop_back();
    	return z;
    }
    
    vint hmax(vint x,vint y){
    	if(x.size()>y.size())
    		return x;
    	if(x.size()<y.size())
    		return y;
    	for(register int i=(int)x.size()-1;i>=0;i--){
    		if(x[i]>y[i])
    			return x;
    		if(x[i]<y[i])
    			return y;
    	}
    	return x;
    }
    
    vint hchange(int x){
    	vint r;
    	while(x){
    		r.push_back(x%10);
    		x/=10;
    	}
    	return r;
    }
    
    vint hminus(vint x,vint y){
    	vint z(max((int)x.size(),(int)y.size())+1);
    	for(register int i=0;i<(int)z.size()-1;i++){
    		if(i<(int)x.size())
    			z[i]+=x[i];
    		if(i<(int)y.size())
    			z[i]-=y[i];
    		if(z[i]<0){
    			z[i]+=10;
    			z[i+1]--;
    		}
    	}
    	while((int)z.size()>1 && !z.back())
    		z.pop_back();
    	return z;
    }
    
    void hwrite(vint x){
    	if(x.back()==-1){
    		putchar('-');
    		x.pop_back();
    		vint a,b;
    		for(register int i=0;i<(int)x.size();i++)
    			a.push_back(x[i]);
    		for(register int i=0;i<(int)x.size();i++)
    			b.push_back(0);
    		b.push_back(1);
    		x=hminus(b,a);
    	}
    	for(register int i=x.size()-1;i>=0;i--)
    		putchar(x[i]+48);
    	putchar('
    ');
    	return;
    }
    
    int main(){
    	vint x,y;
    	x=hread();
    	y=hread();
    	vint z=hminus(x,y);
    	hwrite(z);
    	return 0;
    }
    
  • 相关阅读:
    hibernate关联关系(多对多)
    hibernate关联关系(一对多)
    hibernate主键生成策略
    hibernate01
    利用Struts2拦截器完成文件上传功能
    layui的CRUD案列
    Struts2的CRUD
    Git中.gitignore文件不起作用
    在 Visual Studio 中使用 Q# 进行量子编程
    Elasticsearch 搜索
  • 原文地址:https://www.cnblogs.com/ztz-cpp/p/12609724.html
Copyright © 2011-2022 走看看