大数

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

这里就要用数组来模拟俩个数相加。

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

int main() {
    scanf("%s%s",str1,str2);
    int i,la,lb;
    la = strlen(str1);
    lb = strlen(str2);
    for(i=0;i<la;i++)
    {
        a[la-i] = str1[i] - '0';//字符转化为数字 
    }
    for(i=0;i<lb;i++)
    {
        b[lb-i] = str2[i] - '0';
    }
    int lc = max(la,lb)+1; //可能最后一位进位(如果不进,后面要消去) 
    for(i=1;i<=lc;i++)
    {
        c[i] += a[i] + b[i] ;
        c[i+1] +=c[i]/10;
        c[i] = c[i]%10;
    }
    if(c[lc]==0&&lc>1) lc--;//if c[i] 等同于指向最大位,判断是否为0(要判断是否就是0,所以有lc>0) 
    for(i=0;i<lc;i++)
    {
        printf("%d",c[lc-i]);
    }

    return 0;
}

大数减法
差不多相同的道理,只是变成与更大位数借位,这个一换,就成就了减法;
上代码

#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;
}
全部评论

相关推荐

04-02 10:09
门头沟学院 Java
用微笑面对困难:这里面问题还是很多的,我也不清楚为啥大家会感觉没啥问题。首先就是全栈开发实习9个月的内容都没有java实习生的内容多,1整个技术栈没看出太核心和难点的内容,感觉好像被拉过去打杂了,而且全栈基本上很容易被毙。里面能问的bug是在太多了比如L:继承 BaseMapper 可直接使用内置方法’。请问你的 BaseMapper 是如何扫描实体类注解如果瞬时产生 100 个上传任务,MySQL 的索引设计是否会有瓶颈?你做过分库分表或者索引优化吗?全栈的内容可以针对动态难点去搞,技能特长写在下面吧,你写了这么多技能,项目和实习体现了多少?你可以在项目里多做文章然后把这个放下去,从大致来看实习不算太水,有含金量你也要写上内容针对哨兵里面的节点变化能问出一万个问题,这个很容易就爆了。
提前批简历挂麻了怎么办
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务