“21天好习惯“第一期-12

wuchangjian2021-11-03 03:03:43编程学习

大数减法
int,long long 的数量级分别为 1e9,1e18,当数据大于18位时无法直接简单的a+b计算,会变成负数。

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std; 
int a[505],b[505],c[505];
char st1[505],st2[505],st3[505];

bool compare(char s1[], char s2[])
{
    int x = strlen(s1);
    int y = strlen(s2);
    if(x!=y) return x>y;
    else{
        int i;
        for(i=0;i<x;i++)
        if(s1[i]!=s2[i])
        return s1[i]>s2[i];

    }
}
int main() {
    int flag = 0;
    scanf("%s%s",st1,st2);
    int i,j;
    if(!compare(st1,st2)) 
    {
         flag = 1;
        strcpy(st3,st1);
        strcpy(st1,st2);
        strcpy(st2,st3);
    }
    int x = strlen(st1);
    int y = strlen(st2);
    for(i=0;i<x;i++)
        a[x-i] = st1[i] - '0'; 
    for(i=0;i<y;i++)
        b[y-i] = st2[i] - '0';
    int z = x;

    for(i=1;i<=z;i++)
    {
        if(a[i]<b[i])
        {
            printf("zcx");
            a[i]+=10;
            a[i+1] -=1;

        }
        c[i] = a[i] - b[i];

      }
    while(c[z]==0&& z>1) z--;
    if(flag) printf("-");
    for(i=z;i>0;i--)
    printf("%d",c[i]);

    return 0;
}

相关文章

超全的计算机专业毕业设计选题

物流管理系统 网络资产管理系统 网络硬盘管理系统 股票管理系统 学校比赛...

双亲委派模型

目录 1.1类加载器 1.2分类 1.3双亲委派模型 1.3.1工作过程...

如何防止java jar被反编译

如何防止java jar被反编译

大家晚上好,咱们今天来谈谈,如何防止java jar被反编译...

Vue--过渡与动画--使用/教程/实例

Vue--过渡与动画--使用/教程/实例

原文网址 简介 说明         本文用示例介绍Vue.js的过渡与动画的用法...

HTML基础

HTML基础

一.五大浏览器      1,IE、火狐(Firefox&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。