大数

大数加法: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;
}
全部评论

相关推荐

#牛客AI配图神器#和波主熟的朋友们都知道,波主真的很挺贪玩的哈哈哈哈很少看八股,也不爱看。。可能你们现在拷打波主八股会支支吾吾...回想我的面试,似乎都是围绕着我会的地方问,大概是最近和宿佬还有学长学到的引导面试罢...注意,此文只适合对面试技巧提升,并不是说可以不学八股啊喂!!回忆本人的面试经验,面试官刚拿到你的简历,对你是一无所知的,那其实他会根据印象深的东西对你进行提问,所以我们在简历方面可以做一个引导。面试开头是很正常的自我介绍,很多人会觉得随便说一下就好,但其实我们可以在这里也做一个引导的,而且多说一点也可以给面试官时间看你的简历,所以这里也可以准备一下。然后就是具体提问了,对实习...
nokotan:佬tql,还很谦虚。个人决定佬说得很对,要有意把面试官提问引导到简历项目上,但前提是自己对项目一定要熟悉。项目的需求背景、难点痛点、已有方案的不足、解决方案的实现都得有认知,虽然我们实习大多数是打杂,但是不影响我们偷文档学业务。只要能把上面几个点做到自圆其说,那基本就有6、7成把握了
点赞 评论 收藏
分享
牛客316659795号:不是,证明hr初筛已经过了,要投给部门筛一遍
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务