高精度减法模板

来源:互联网 发布:serializearray转json 编辑:程序博客网 时间:2024/05/22 06:22
#include<iostream>#include<stdio.h>#include<cstring>using namespace std;int Substraction (int c[], int len1, int d[], int len2, int e[]) //减法{    int i=0, ans=0;    while(i <= len1-1 || i <= len2-1)    {        e[i] = c[i] - d[i] - ans;        if(e[i] < 0)        {            ans = 1;            e[i] = e[i] + 10; //是否需要借位        }        else        {            ans = 0;        }        i++;    }    return i-1;}int main(){    char a[500],b[500];    int c[500],d[500],e[500];    int len1, len2, len3;    memset(c,0,sizeof(c));    memset(d,0,sizeof(d));    memset(e,0,sizeof(e));    scanf("%s", a);    scanf("%s", b);    len1 = strlen(a);    len2 = strlen(b);    for (int i = 0; i <= len1-1; i++ )    {        c[len1 - i - 1] = a[i] - '0';    }    for (int i = 0; i <= len2-1; i++ )    {        d[len2 - i - 1] = b[i] - '0';    }    if(len1 > len2 || (len1 == len2 && strcmp(a,b) >= 0))    {        len3 = Substraction(c, len1, d, len2, e);        int i;        for(i = len3; i > 0; i--)            if(e[i]) break;        for(; i >= 0; i--)            printf("%d", e[i]);        printf("\n");        return 0;    }    else    {        cout <<"-";        len3 = Substraction(d, len2, c, len1, e);        int i;        for(i = len3; i > 0; i--)            if(e[i]) break;        for(; i >= 0; i--)            printf("%d", e[i]);        printf("\n");        return 0;    }}
// code(vs)3115

1 0
原创粉丝点击