zoukankan      html  css  js  c++  java
  • JDOJ 1790: 高精度A-B

    JDOJ 1790: 高精度A-B

    JDOJ传送门

    洛谷 P2142 高精度减法

    洛谷传送门

    题目描述

    高精度减法

    输入格式

    两个整数a,b(第二个可能比第一个大)

    输出格式

    结果(是负数要输出负号)

    输入输出样例

    输入 #1复制

    输出 #1复制

    说明/提示

    20%数据a,b在long long范围内

    100%数据0 < a,b leq 10^{10086}0<a,b≤1010086

    题解:

    (注:本题在JDOJ上的提交是输出超限的,本人一阵蒙圈,无奈请各位大佬指正)

    (但是洛谷AC是没问题的)

    高精度减法的模板题(QWQ)

    减法的原理其实也是模拟,坑点一是借位,坑点二是判负输出。

    代码漏洞百出,请大佬指正:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxx=1e5+1;
    const int INF=1e5;
    char aa[maxx],bb[maxx];
    int a[maxx],b[maxx],flag;
    int main()
    {
        scanf("%s%s",aa+1,bb+1);
        int lena=strlen(aa+1);
        int lenb=strlen(bb+1);
        for(int i=1;i<=lena;i++)
            a[i]=aa[lena-i+1]-'0';
        for(int i=1;i<=lenb;i++)
            b[i]=bb[lenb-i+1]-'0';
        if(lena<lenb)
        {
            for(int i=1;i<=lenb;i++)
                swap(a[i],b[i]);
            flag=1;
        }
        int lenc=max(lena,lenb);
        for(int i=1;i<=lenc;i++)
        {
            a[i]=a[i]-b[i];
            if(a[i]<0)
                a[i]+=10,a[i+1]--;
        }
        int t=INF;
        if(flag)
            printf("-");
        while(!a[t])
        {
            t--;
            if(t==0)
            {
                printf("0");
                return 0;
            }
        }
        if(a[t]==-1)
        {
            printf("-");
            t--;
        }
        for(int i=t;i>=1;i--)
            printf("%d",a[i]);
        return 0;
    }
    
  • 相关阅读:
    DIV 设置垂直居中
    JavaScript--什么是函数
    JavaScript--引用JS外部文件
    JavaScript--如何插入JS
    CSS-类和ID选择器的区别
    CSS-ID选择器
    CSS类选择器
    CSS样式介绍
    HTML--使用mailto在网页中链接Email地址
    HTML--form表单中的label标签
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11597510.html
Copyright © 2011-2022 走看看