25 条题解

  • 0
    @ 2025-7-24 15:50:23

    快来看我的高精度函数!

    兼带高精加、高精减、高精乘!!!

    不过大佬被喷,高精除我没写哟。

    string cheng(string n,string m)
    {
        string k="";
        int a[10010],b[10010],f[10010];
        int la=n.size(),lb=m.size(),lf=la+lb;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(f,0,sizeof(f));
        for(int i=la-1;i>=0;i--) a[la-i]=n[i]-'0';
        for(int i=lb-1;i>=0;i--) b[lb-i]=m[i]-'0';
        for(int i=1;i<=la;i++)
            for(int j=1;j<=lb;j++)
                f[i+j-1]+=a[i]*b[j];
        for(int i=1;i<=lf;i++)
        {
            f[i+1]+=f[i]/10;
            f[i]%=10;
        }
        while(f[lf]==0&&lf>1) lf--;
        for(int i=lf;i>=1;i--) k=k+char(f[i]+'0');
        return k;
    }
    string jia(string n,string m)
    {
        int f[10010],a[10010],b[10010];
        string t="";
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(f,0,sizeof(f));
        int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1;
    	for(int i=1;i<=a1;i++) a[i]=n[a1-i]-'0';
    	for(int i=1;i<=a2;i++) b[i]=m[a2-i]-'0';
    	for(int i=1;i<=a3;i++)
    	{
    		f[i]+=a[i]+b[i];
    		if(f[i]>=10)
    		{
    			f[i]-=10;
    			f[i+1]++;
    		}
    	}
    	if(f[a3]==0) a3--;
        for(int i=a3;i>=1;i--) t=t+char(f[i]+'0');
        return t;
    }
    string jian(string n,string m)
    {
        int a[10010],b[10010],f[10010],la=n.size(),lb=m.size(),lf;
        string k="";
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(f,0,sizeof(f));
        if(lb>la||la==lb&&n<m)
        {
            swap(n,m);
            swap(la,lb);
            cout<<'-';
        }
        lf=la;
        for(int i=1;i<=la;i++) a[i]=n[la-i]-'0';
    	for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0';
        for(int i=1;i<=lf;i++)
        {
            if(a[i]<b[i])
            {
                a[i+1]--;
                a[i]+=10;
            }
            f[i]=a[i]-b[i];
        }
        while(f[lf]==0&&lf>1) lf--;
        for(int i=lf;i>=1;i--) k=k+char(f[i]+'0');
        return k;
    }
    string dfs(string n,char w,string m)
    {
        if(w=='+') return jia(n,m);
        if(w=='*') return cheng(n,m);
        if(w=='-') return jian(n,m);
    }
    

    信息

    ID
    1
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    427
    已通过
    209
    上传者