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;
    }
    
  • 相关阅读:
    禁止 FireFox 提示安装 Flash 插件
    MongoDb不能同步,可能是服务器时间不一致
    simpletest的一点经验:0个测试、1个Case的情况
    VIM学习笔记:列编辑
    使用 nginx 做http代理
    VirtualBox非常简单的克隆虚拟机的功能
    PDOStatement的HY093错误原因及解决办法
    火狐英文原版的下载地址
    修改 PHP 的 memory_limit 内存限定
    TEA 加密解法,统一了C语言、Java与PHP的运算结果
  • 原文地址:https://www.cnblogs.com/ztz-cpp/p/12609724.html
Copyright © 2011-2022 走看看