zoukankan      html  css  js  c++  java
  • noi 大整数减法

    #include<stdio.h>
    #include<string.h>
    char a[205];
    char b[205];
    int main()
    {
        int a1,b1,i,n;
        while(scanf("%s %s",a,b)!=EOF)
        {
            int c[205]= {0},d[205]= {0};
            a1=strlen(a);///字符输入两个大整数
            b1=strlen(b);
            for(i=1; i<=a1; i++)///将字符串的每一位保存在数组中,注意这里逆过来了,便于计算时对齐
            {
                c[i]=a[a1-i]-'0';
            }
            for(i=1; i<=b1; i++)
            {
                d[i]=b[b1-i]-'0';
            }
            if(a1>b1)///将减的次数要取大的,多的课当做减0
                n=a1;
            else
                n=b1;
            for(i=1; i<=n; i++)///前面已经反转了所以从前面开始计算
            {
                c[i]=c[i]-d[i];
                if(c[i]<0)///如果减数小于被减数,高位减一,模仿竖式减法
                {
                    c[i+1]-=1;
                    c[i]+=10;
                }
            }
            int x=0;
            ///去除强导0,即第一个非0数字前的0,
            ///注意最后一位不要去应为可能出现得数为0的情况
            for(i=n; i>=2; i--)
            {
                if(c[i]==0)
                {
                    x++;
                }
                else
                    break;
            }
            for(i=n-x; i>=1; i--)
            {
                printf("%d",c[i]);
            }
            printf("
    ");
    
        }
    }

    此题用字符串读入就行,在转化成数组,模拟竖式减法就行,主要是注意答案为0的情况

    原题链接:点我转移

  • 相关阅读:
    soundtouch 变速算法matlab实现
    resample matlab实现
    hrtf virtual surround matlab实现
    hrtf 旋转音效matlab实现
    audio mixer
    schroeder reverb matlab实现
    HTML DOCTYPE文档类型举例说明
    window 连接双网
    linux 命令
    sqlserver 时间戳
  • 原文地址:https://www.cnblogs.com/tp25959/p/10236066.html
Copyright © 2011-2022 走看看