高精度模板(各个)

加法

// luogu-judger-enable-o2
#include <bits/stdc++.h>
using namespace std;
int main()
{
	char a1[1000],b1[1000];
	int a[1000]= {0},b[1000]= {0},c[1000]= {0},la,lb,lc,i,x;
	cin>>a1>>b1;
	la=strlen(a1);
	lb=strlen(b1);
	for(i=0; i<=la-1; i++) a[la-i]=a1[i]-48;
	for(i=0; i<=lb-1; i++) b[lb-i]=b1[i]-48;
	lc=1,x=0;
	while(lc<=la||lc<=lb) c[lc]=a[lc]+b[lc]+x,x=c[lc]/10,c[lc]%=10,lc++;
	c[lc]=x;
	if(c[lc]==0) lc--;
	for(i=lc; i>=1; i--) cout<<c[i];
	cout<<endl;
	return 0;
}
//A+B problem

乘法

// luogu-judger-enable-o2
#include<bits/stdc++.h>
using namespace std;
char a1[50001],b1[50001];
int a[50001],b[50001],i,x,len,j,c[50001];
int main ()
{
    cin >>a1 >>b1;
    a[0]=strlen(a1);b[0]=strlen(b1);
    for (i=1;i<=a[0];++i)a[i]=a1[a[0]-i]-'0';
    for (i=1;i<=b[0];++i)b[i]=b1[b[0]-i]-'0';
    for (i=1;i<=a[0];++i)for (j=1;j<=b[0];++j)c[i+j-1]+=a[i]*b[j];
    len=a[0]+b[0];
    for (i=1;i<len;++i)if (c[i]>9){c[i+1]+=c[i]/10;c[i]%=10;}
    while (c[len]==0&&len>1)len--;
    for (i=len;i>=1;--i) cout<<c[i];
    return 0;
}
posted @ 2020-07-28 20:18  zhnzh  阅读(96)  评论(0编辑  收藏  举报