1 条题解

  • 0
    @ 2024-4-6 10:23:52

    我的第一篇题解: 可以用python直接过 高精加的本质其实就是竖式,不妨画个表:

    13
    +28
    

    整个竖式本质就是从右往左加 3+8==11 进位,因此十位+1.得到41 高精加的本质就是把这个过程用代码写出来

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int main(){
    	char a1[10010],b1[10010];
    	int a[10010],b[10010],c[10010],lena,lenb,lenc,i,x=0;//a是加数1 b是加数2 c是和;
    	memset(a,0,sizeof(a));
    	memset(b,0,sizeof(b));
    	memset(c,0,sizeof(c));//清空整个数。
    	scanf("%s",a1);
    	scanf("%s",b1);
    	lena=strlen(a1);
    	lenb=strlen(b1);//输入并统计长度,用于计算。
    	for(i=1;i<=lena;i++)
    		a[i]=a1[lena-i]-'0';
    	for(i=1;i<=lenb;i++)
    		b[i]=b1[lenb-i]-'0';
    	lenc=1;//计算整个
    	while(lenc<=lena||lenc<=lenb){
    		c[lenc]=a[lenc]+b[lenc]+x;
    		x=c[lenc]/10;
    		c[lenc]%=10;
    		lenc++;
    	}//计算进位并且给和字符串留出空间
    	c[lenc]=x;
    	while(c[lenc]==0&&lenc!=1){
    		lenc--;}
    		for(i=lenc;i>=1;i--){
    			cout<<c[i];
    		}//输出
    }
    

    高精度是用于避免超过long long 数组限度而导致出现。非常简单

    此代码是我好久之前写的,很烂,不要抄

    信息

    ID
    330
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    递交数
    10
    已通过
    8
    上传者