zoukankan      html  css  js  c++  java
  • 高精度之减法

    3115 高精度练习之减法

     

     时间限制: 1 s
     空间限制: 64000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。

    输入描述 Input Description

    读入两个用空格隔开的正整数

    输出描述 Output Description

    输出A-B的值

    样例输入 Sample Input

    3 12

    样例输出 Sample Output

    -9

    数据范围及提示 Data Size & Hint

    两个正整数的位数不超过500位

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int main()
    {
        int a[501],b[501],c[501],lena,lenb,lenc,i;
        char n[501],n1[501],n2[501];
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        cin>>n1;
        cin>>n2;
        if(strlen(n1)<strlen(n2)||(strlen(n1)==strlen(n2)&&strcmp(n1,n2)<0))
                                 //strcmp()为字符串比较函数,当n1==n2,返回0;
                                 //n1>n2时,返回正整数;n1<n2时,返回负整数
        {                        //处理被减数和减数,交换被减数和减数
            strcpy(n,n1);        //将n1数组的值完全赋值给n数组 
            strcpy(n1,n2);
            strcpy(n2,n);
            cout<<"-";
        }
        lena=strlen(n1);
        lenb=strlen(n2);
        for(i=0; i<lena; i++)
            a[lena-i]=int(n1[i]-'0');
        for(i=0; i<lenb; i++)
            b[lenb-i]=int(n2[i]-'0');
        i=1;
        while(i<=lena||i<=lenb)
        {
            if(a[i]<b[i])
            {
                a[i]+=10;
                a[i+1]--;
            }
            c[i]=a[i]-b[i];
            i++;
        }
        lenc=i;
        while((c[lenc]==0)&&(lenc>1))
            lenc--;
        for(int i=lenc; i>=1; i--)
            cout<<c[i];
        cout<<endl;
        return 0;
    }
  • 相关阅读:
    多进程访问同一文件问题
    在主页面中实现Iframe中的子页面的切换
    在任务栏显示地理坐标
    ajax异步调用过程
    实现DIV标签的显示与隐藏
    使用supermap的心得
    nokia手机问题
    sys.webforms.pagerequestmanagerservererrorexception回发或回调参数无效
    AjaxScript地图打印[转]
    js获取下拉框中的值
  • 原文地址:https://www.cnblogs.com/dxy1174868024/p/5469025.html
Copyright © 2011-2022 走看看